Valider 61e73376 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Integration des listes d'ojets sous forme de squelettes.

Les vues sont definies dans prive/listes/
elles portent par defaut le nom de la table spip, mais il peut y avoir des variantes (cf vue visiteurs.html)
Elles sont utilisees dans l'espace prive via 
$lister_objets = charger_fonction('lister_objets','inc');
et ensuite appelees par
$lister_objets($vue,$contexte);
A noter la presence d'un critere where qui permet d'injecter des conditions specifiques ponctuelles, et qui recupere le 'where' fournit au contexte.

Ces listes sont aisement reutilisables dans des squelettes

meme_rubrique est unifiee en faisant appel direct a lister_objets. Les informations inutiles sont masquees en css.
afficher_objets devient obsolete. On ne supprime pas tout son code car il peut encore etre utilise par des plugins, mais on note l'obsolesence dans les divers fichiers concernes.

Il reste la page mots_tous a unifier, elle presente un type de liste de mot particulier.
parent ce54a83b
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+13 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -36,7 +36,6 @@ ecrire/action/instituer_breve.php -text
ecrire/action/instituer_collaboration.php -text
ecrire/action/instituer_groupe_mots.php -text
ecrire/action/instituer_langue_rubrique.php -text
ecrire/action/instituer_rubrique_breves.php -text
ecrire/action/instituer_site.php -text
ecrire/action/instituer_syndic.php -text
ecrire/action/joindre.php -text
@@ -169,7 +168,6 @@ ecrire/exec/install.php -text
ecrire/exec/instituer_auteur.php -text
ecrire/exec/lang_raccourcis.php -text
ecrire/exec/legender.php -text
ecrire/exec/meme_rubrique.php -text
ecrire/exec/memoriser.php -text
ecrire/exec/menu_agenda.php -text
ecrire/exec/menu_navigation.php -text
@@ -199,6 +197,7 @@ ecrire/exec/tourner.php -text
ecrire/exec/upgrade.php -text
ecrire/exec/valider_xml.php -text
ecrire/exec/virtualiser.php -text
ecrire/exec/visiteurs.php -text
ecrire/genie/maintenance.php -text
ecrire/genie/mise_a_jour.php -text
ecrire/genie/syndic.php -text
@@ -258,6 +257,7 @@ ecrire/inc/json.php -text
ecrire/inc/lang_liste.php -text
ecrire/inc/legender.php -text
ecrire/inc/lien.php -text
ecrire/inc/lister_objets.php -text
ecrire/inc/log.php -text
ecrire/inc/mail.php -text
ecrire/inc/meme_rubrique.php -text
@@ -736,6 +736,17 @@ prive/javascript/login.js -text
prive/javascript/multilang.js -text
prive/javascript/pause.js -text
prive/javascript/sha256.js -text
prive/listes/articles.html -text
prive/listes/auteurs.html -text
prive/listes/auteurs_fonctions.php -text
prive/listes/breves.html -text
prive/listes/mots.html -text
prive/listes/rubriques.html -text
prive/listes/syndic.html -text
prive/listes/syndic_articles.html -text
prive/listes/syndic_articles_fonctions.php -text
prive/listes/visiteurs.html -text
prive/listes/visiteurs_fonctions.php -text
prive/minipres.css -text
prive/modeles/application.html -text
prive/modeles/audio.html -text
+11 −55
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -17,53 +17,8 @@ include_spip('inc/presentation');
// http://doc.spip.org/@encours_accueil
function encours_accueil()
{
	global $connect_statut;


	$res = '';

	// Les articles a valider
	//

	$res .=  afficher_objets('article',_T('info_articles_proposes'), array("WHERE" => "statut='prop'", 'ORDER BY' => "date DESC"));

	//
	// Les breves a valider
	//
	$res .= afficher_objets('breve',afficher_plus(generer_url_ecrire('breves'))._T('info_breves_valider'), array("FROM" => 'spip_breves', 'WHERE' => "statut='prepa' OR statut='prop'", 'ORDER BY' => "date_heure DESC"), true);

	//
	// Les sites references a valider
	//
	if ($GLOBALS['meta']['activer_sites'] != 'non') {
		$res .= afficher_objets('site',afficher_plus(generer_url_ecrire('sites_tous')).'<b>' . _T('info_site_valider') . '</b>', array("FROM" => 'spip_syndic', 'WHERE' => "statut='prop'", 'ORDER BY'=> "nom_site"));
	}

	if ($connect_statut == '0minirezo') {
	//
	// Les sites a probleme
	//
	  if ($GLOBALS['meta']['activer_sites'] != 'non') {
		$res .= afficher_objets('site',afficher_plus(generer_url_ecrire('sites_tous')). '<b>' . _T('avis_sites_syndiques_probleme') . '</b>', array('FROM' => 'spip_syndic', 'WHERE' => "(syndication='off' OR syndication='sus') AND statut='publie'", 'ORDER BY' => 'nom_site'));
	}

	// Les articles syndiques en attente de validation
		$cpt = sql_countsel("spip_syndic_articles", "statut='dispo'");
		if ($cpt)
			$res .= "\n<br /><small><a href='"
			. generer_url_ecrire("sites_tous","")
			. "' style='color: black;'>"
			. $cpt
			. " "
			. _T('info_liens_syndiques_1')
			. " "
			. _T('info_liens_syndiques_2')
			. "</a></small>";

	}
	
	$res = pipeline('accueil_encours',$res);

	include_spip("exec/suivi_edito");
	$res = encours_suivi();
	if (!$res) return '';

	return 
@@ -389,24 +344,25 @@ function exec_accueil_dist()

	echo debut_droite("", true);
	
	$lister_objets = charger_fonction('lister_objets','inc');

	$date_now = date('Y-m-d H:i:s');
	if ($GLOBALS['meta']["post_dates"] == "non"
	AND $connect_statut == '0minirezo')
		echo afficher_objets('article',_T('info_article_a_paraitre'), array("WHERE" => "statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')), 'ORDER BY' => "date"));

		echo $lister_objets('articles',array('titre'=>_T('info_article_a_paraitre'),'statut'=>'publie', 'par'=>'date', 'where'=>'date>'.sql_quote($date_now), 'date_sens'=>1));

	// Les articles recents
	//
	echo afficher_objets('article',
	#afficher_plus(generer_url_ecrire('articles_page')) .
	_T('articles_recents'), array("WHERE" => "statut='publie'" .($GLOBALS['meta']["post_dates"] == "non"
		? " AND date<=".sql_quote(date('Y-m-d H:i:s')) : ''),
		'ORDER BY' => "date DESC", 'LIMIT' => '0,4'));
	$contexte = array('titre'=>_T('articles_recents'),'statut'=>'publie', 'par'=>'date','nb'=>5);
	if ($GLOBALS['meta']["post_dates"] == "non")
		$contexte['where']='date<='.sql_quote($date_now);
	echo $lister_objets('articles',$contexte);

//
// Vos articles en cours 
//

	echo afficher_objets('article',afficher_plus_info(generer_url_ecrire('articles_page'))._T('info_en_cours_validation'),	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='prepa'", "ORDER BY" => "A.date DESC"));
	echo $lister_objets('articles',array('titre'=>afficher_plus_info(generer_url_ecrire('articles_page'))._T('info_en_cours_validation'),'statut'=>'prepa', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));

	if ($spip_display == 4)
	  echo colonne_droite_eq4($id_rubrique,
+28 −30
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -15,8 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');

// http://doc.spip.org/@exec_articles_page_dist
function exec_articles_page_dist()
{
function exec_articles_page_dist(){
	global $connect_statut, $connect_id_auteur;

	pipeline('exec_init',array('args'=>array('exec'=>'articles_page'),'data'=>''));
@@ -49,28 +48,27 @@ echo debut_droite('', true);
	//
	// Vos articles en cours de redaction
	//
	$lister_objets = charger_fonction('lister_objets','inc');

	echo afficher_objets('article',_T('info_en_cours_validation'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='prepa'", "ORDER BY" => "A.date DESC"));


	echo $lister_objets('articles',array('titre'=>_T('info_en_cours_validation'),'statut'=>'prepa', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));

	//
	// Vos articles soumis au vote
	//

	echo afficher_objets('article',_T('info_attente_validation'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='prop'", "ORDER BY" => "A.date DESC"));
	echo $lister_objets('articles',array('titre'=>_T('info_attente_validation'),'statut'=>'prop', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));

	//
	// Vos articles publies
	//

	echo afficher_objets('article',_T('info_publies'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='publie'", "ORDER BY" => "A.date DESC"));
	echo $lister_objets('articles',array('titre'=>_T('info_publies'),'statut'=>'publie', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));

	//
	//  Vos articles refuses
	//

	echo afficher_objets('article',_T('info_refuses'),	array('FROM' =>"spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$connect_id_auteur AND A.statut='refuse'",  'ORDER BY' => "A.date DESC"));
	echo $lister_objets('articles',array('titre'=>_T('info_refuses'),'statut'=>'refuse', 'par'=>'date','id_auteur'=>$GLOBALS['visiteur_session']['id_auteur']));

	echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles_page'),'data'=>''));

+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -155,7 +155,8 @@ function auteurs_interventions($auteur) {
	else if ($connect_id_auteur == $id_auteur) $aff_art = array('prepa','prop','publie'); 
	else $aff_art = array('prop','publie'); 

	echo afficher_objets('article',_T('info_articles_auteur'), 	array('FROM' => "spip_articles AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_article=L.id_article", "WHERE" => "L.id_auteur=$id_auteur AND " . sql_in('A.statut', $aff_art), "ORDER BY" => "A.date DESC"));
	$lister_objets = charger_fonction('lister_objets','inc');
	echo $lister_objets('articles',array('titre'=>_T('info_articles_auteur'),'statut'=>$aff_art, 'par'=>'date','id_auteur'=>$id_auteur));

	// Messages de l'auteur et discussions en cours
	if ($GLOBALS['meta']['messagerie_agenda'] != 'non'
+59 −342
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -23,374 +23,91 @@ include_spip('inc/presentation');
#@define('AUTEURS_DEFAUT', '!');

// http://doc.spip.org/@exec_auteurs_dist
function exec_auteurs_dist()
{
	$tri = preg_replace('/\W/', '', _request('tri'));
	if (!$tri) $tri='nom'; 
	$statut =  _request('statut');
	if (!$statut)  $statut = AUTEURS_DEFAUT . AUTEURS_MIN_REDAC;
	$debut = intval(_request('debut'));
function exec_auteurs_dist($vue = 'auteurs'){

	$recherche = NULL;
	if ($cherche = _request('recherche')) {
		include_spip('inc/rechercher');
		$tables = liste_des_champs();
		$tables = array('auteur'=>$tables['auteur']);
		$recherche = recherche_en_base($cherche, $tables,array('toutvoir'=>true));
		if ($recherche['auteur'])
			$recherche = array_keys($recherche['auteur']);
		else {
			$recherche = "aut.id_auteur=0"; // rien trouve !
		}
	}
	$form = formulaire_recherche("auteurs",(($s=_request('statut'))?"<input type='hidden' name='statut' value='$s' />":""));
	exec_auteurs_args($statut, $tri, $debut, $recherche,$form, $cherche);
}


// http://doc.spip.org/@exec_auteurs_args
function exec_auteurs_args($statut, $tri, $debut, $recherche=NULL, $trouve='', $cherche='')
{
	if ($recherche !=='') {
		list($auteurs, $lettre, $nombre_auteurs, $debut) =
		  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);

		if ($cherche){
			if (count($auteurs))
				$recherche = "<h3>". _T('info_resultat_recherche')." &laquo;$cherche&raquo;</h3>" . $recherche;
			else
				$recherche = "<h3>". _T('info_recherche_auteur_zero',array('cherche_auteur'=>$cherche))."</h3>" . $recherche;
		}
	$statut = AUTEURS_DEFAUT . AUTEURS_MIN_REDAC;

	}

	if (_AJAX) {
		ajax_retour($recherche); //ecrire en id='auteurs' ci-dessous
	} else {

		pipeline('exec_init',array('args'=>array('exec'=>'auteurs'),'data'=>''));
	pipeline('exec_init',array('args'=>array('exec'=>$vue),'data'=>''));

		$visiteurs = !statut_min_redac($statut);
	$commencer_page = charger_fonction('commencer_page', 'inc');
		echo $commencer_page(
			$visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),
				     "auteurs","redacteurs");

		echo bandeau_auteurs($tri, $visiteurs);
		
		echo  $trouve, "<br class='nettoyeur' />";

		echo "<div id='auteurs'>", $recherche, "</div>";
		echo pipeline('affiche_milieu',array('args'=>array('exec'=>'auteurs'),'data'=>''));
		echo fin_gauche(), fin_page();
	}
}

// http://doc.spip.org/@bandeau_auteurs
function bandeau_auteurs($tri, $visiteurs)
{
	global $connect_id_auteur,   $connect_statut,   $connect_toutes_rubriques;
	echo $commencer_page(_T('info_'.$vue),"auteurs","$vue");

	$ret = gros_titre($visiteurs ? _T('info_visiteurs') :  _T('info_auteurs'),'',false) . debut_gauche("auteurs",true) . debut_boite_info(true);
	$ret = debut_gauche("$vue",true) . debut_boite_info(true);

	if ($visiteurs) 
		$ret .= "\n<p class='arial1'>"._T('info_gauche_visiteurs_enregistres'). '</p>';
	else 
	$ret .= "\n<p class='arial1'>"._T('info_gauche_auteurs'). '</p>';

	if ($connect_statut == '0minirezo')
	if ($GLOBALS['visiteur_session']['statut'] == '0minirezo')
		$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'=>''));
	$ret .= pipeline('affiche_gauche',array('args'=>array('exec'=>$vue),'data'=>''));

	if ($connect_statut == '0minirezo') {
	$res = '';
	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);

		if ($connect_toutes_rubriques) 
			$res = icone_horizontale(_T('icone_creer_nouvel_auteur'), generer_url_ecrire("auteur_infos", 'new=oui'), "auteur-24.png", "new", false);
		else $res = '';
	$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=".$GLOBALS['visiteur_session']['id_auteur']), "fiche-perso-24.gif","rien.gif", false);

		$res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"), "information-perso-24.png","", false);
	if ($vue=='auteurs' AND avoir_visiteurs(true))
		$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("visiteurs"), "auteur-24.gif", "", false);
	if ($vue=='visiteurs')
		$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs"), "auteur-24.gif", "", false);

		if (avoir_visiteurs(true)) {
                        if ($visiteurs)
				$res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs", "statut=" . AUTEURS_MIN_REDAC), "auteur-24.png", "", false);
			else
				$res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=!" . AUTEURS_MIN_REDAC), "auteur-6forum-24.png", "", false);
		}
	$ret .= bloc_des_raccourcis($res);
	}
	$ret .= creer_colonne_droite('auteurs',true);
	$ret .= pipeline('affiche_droite',array('args'=>array('exec'=>'auteurs'),'data'=>''));
	$ret .= creer_colonne_droite($vue,true);
	$ret .= pipeline('affiche_droite',array('args'=>array('exec'=>$vue),'data'=>''));
	$ret .= debut_droite('',true);

	return $ret;
}

// http://doc.spip.org/@statut_min_redac
function statut_min_redac($statut)
{
  $x = (!$statut)
    || (strpos($statut, "0minirezo")!==false)
    || (strpos($statut, "1comite")!==false);

  return $statut[0] =='!' ? !$x : $x;
}

// http://doc.spip.org/@lettres_d_auteurs
function lettres_d_auteurs($query, $debut, $max_par_page, $tri)
{
	$auteurs = $lettre = array();
	$lettres_nombre_auteurs = 0;
	$lettre_prec ="";
	$nombre_auteurs = 0;
	$query = sql_select($query['SELECT'], $query['FROM'], $query['WHERE'], $query['GROUP BY'], $query['ORDER BY']);

	while ($auteur = sql_fetch($query)) {
		if ($nombre_auteurs>=$debut AND $nombre_auteurs<$debut+$max_par_page) {
			$auteur['restreint'] = sql_countsel("spip_auteurs_rubriques", "id_auteur=".$auteur['id_auteur']);
			
			$auteurs[] = $auteur;
		}

		if ($tri == 'nom') {
			$premiere_lettre = strtoupper(spip_substr(corriger_typo($auteur['nom']),0,1));
			if ($premiere_lettre != $lettre_prec) { 
				$lettre[$premiere_lettre] = $nombre_auteurs;
			}
			$lettre_prec = $premiere_lettre;
		}
		$nombre_auteurs++;
	}
	return array($auteurs, $lettre, $nombre_auteurs, $debut);
}

// http://doc.spip.org/@auteurs_tranches
function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_page, $nombre_auteurs, $cherche='')
{
	global $spip_lang_right;
	$ret .= gros_titre(_T('info_'.$vue),'',false);

	$arg = ($statut ? ("&statut=" .urlencode($statut)) : '')
	   .  ($cherche ? ("&recherche=" . urlencode($cherche)) : '');
	echo $ret;
	echo formulaire_recherche($vue,(($s=_request('statut'))?"<input type='hidden' name='statut' value='$s' />":""));

	$res ="\n<tr class='titrem'>"
	. "\n<th style='width: 20px'>";
	echo "<div class='nettoyeur'></div>";

	if ($tri=='statut')
  		$res .= http_img_pack(chemin_image('auteur-0minirezo-16.png'),'', "");
	$contexte = $_GET;
	$contexte['nb'] = MAX_AUTEURS_PAR_PAGE;
	if (substr($statut,0,1)!=='!')
		$contexte['statut'] = explode(',',$statut);
	else {
	  $t =  _T('lien_trier_statut');
	  $res .= auteurs_href(http_img_pack(chemin_image('auteur-0minirezo-16.png'), $t, ""),"tri=statut$arg", " title=\"$t\"");
		$statut = substr($statut,1);
		$statut = explode(',',$statut);
		$statut = sql_allfetsel('DISTINCT statut','spip_auteurs',sql_in('statut',$statut,'NOT'));
		$contexte['statut'] = array_map('reset',$statut);
	}

	$res .= "</th><th style='width: 20px'></th><th>";

	if ($tri=='nom')
		$res .= '<b>'._T('info_nom').'</b>';
	else
		$res .= auteurs_href(_T('info_nom'), "tri=nom$arg", " title='"._T('lien_trier_nom'). "'");

	$res .= "</th><th>";

	if ($tri=='site')
		$res .= '<b>'._T('info_site').'</b>';
	else
		$res .= auteurs_href(_T('info_site'), "tri=site$arg", " title='"._T('info_site'). "'");
	// une barre de navigation entre statuts
	if (count($contexte['statut'])>1) {
		$nav = array(lien_ou_expose(generer_url_ecrire($vue), _T('info_tout_afficher'), !_request('statut')));
		$statuts = $contexte['statut'];
		$res = sql_allfetsel('*', 'spip_auteurs', $cond, '', "statut, nom");
		foreach ($statuts as $statut) {
			$texte = array_search($statut, $GLOBALS['liste_des_statuts']);
			$texte = ($texte?_T($texte):$statut);

	$res .= '</th><th>';

	$col = statut_min_redac($statut) ? _T('info_articles') : _T('message') ;

	if ($tri=='nombre')
		$res .= '<b>' . $col .'</b>';
	else
		$res .= auteurs_href($col, "tri=nombre$arg", " title=\""._T('lien_trier_nombre_articles'). '"');

	$res .= "</th></tr>\n";

	if ($nombre_auteurs > $max_par_page) {
		$res .= "\n<tr class='' ><td colspan='5'><div class='arial1 tranches'>";

		for ($j=0; $j < $nombre_auteurs; $j+=$max_par_page) {
			if ($j > 0) 	$res .= " | ";

			if ($j == $debut)
				$res .= "<b>$j</b>";
			else if ($j > 0)
				$res .= auteurs_href($j, "tri=$tri$arg&debut=$j");
			else
				$res .= auteurs_href('0', "tri=$tri$arg");
			if ($debut > $j  AND $debut < $j+$max_par_page){
				$res .= " | <b>$debut</b>";
			}
		}

		if ($tri == 'nom') {
			$res .= "</div><div>\n";
			$val_prev = 0;
			foreach ($lettre as $key => $val) {
				if ($val == $debut)
					$res .= "<b>$key</b>\n";
				else {
					if ($debut>$val_prev && $debut<$val)
						$res .= "<b>..</b> ";
					$res .= auteurs_href($key, "tri=$tri$arg&debut=$val") . "\n";
			$nav[] = lien_ou_expose(generer_url_ecrire($vue, 'statut='.$statut), $texte, _request('statut')==$statut);
			// verification du get
			if ($statut == _request('statut'))
				$contexte['statut'] = $statut;
		}
				$val_prev = $val;
			}
			$res .= "</div></td></tr>\n";
		}
	}

	$nav = '';
	$debut_suivant = $debut + $max_par_page;
	if ($debut_suivant < $nombre_auteurs OR $debut > 0) {
		$nav = "\n<table id='bas' style='width: 100%' border='0'>"
		. "\n<tr class=''><td align='left'>";

		if ($debut > 0) {
			$debut_prec = max($debut - $max_par_page, 0);
			$nav .= auteurs_href('&lt;&lt;&lt;',"tri=$tri&debut=$debut_prec$arg");
		}
		$nav .= "</td><td style='text-align: $spip_lang_right'>";
		if ($debut_suivant < $nombre_auteurs) {
			$nav .= auteurs_href('&gt;&gt;&gt;',"tri=$tri&debut=$debut_suivant&$arg");
		}
		$nav .= "</td></tr></table>\n";
		echo "<p class='pagination'>".implode(' | ',$nav)."</p>";
	}

	return 	debut_cadre('liste','auteur-24.png','','','lesauteurs')
	. "\n<br /><table  class='arial2' cellpadding='2' style='width: 100%; border: 0px;'>\n"
	. $res
	. $auteurs
	. "</table>\n<br />"
	.  $nav
	. fin_cadre();
	if ($GLOBALS['visiteur_session']['statut']=='0minirezo'){
		// n'exclure que les articles a la poubelle des compteurs
		$contexte['filtre_statut_articles'] = array('poubelle');
	}

// http://doc.spip.org/@auteurs_href
function auteurs_href($clic, $args='', $att='')
{
	$h = generer_url_ecrire('auteurs', $args);
	$a = 'auteurs';

	if (_SPIP_AJAX === 1 )
		$att .= ("\nonclick=" . ajax_action_declencheur($h,$a));

	return "<a href='$h#$a'$att>$clic</a>";
}


// http://doc.spip.org/@requete_auteurs
function requete_auteurs($tri, $statut, $recherche=NULL)
{
	global $connect_statut, $spip_lang, $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 ($statut[0]=='!') {
			  $statut = substr($statut,1); $not = "NOT";
		} else $not = '';
		$visit = !statut_min_redac($statut);
		$statut = preg_split('/\W+/', $statut); 
		$sql_visible = sql_in("A.statut", $statut, $not);
	} else {
		$sql_visible = "(
			A.statut = '0minirezo'
			OR A.id_auteur=$connect_id_auteur
			OR " . sql_in('P.statut', array('prop', 'publie'))
		. ')';
		$visit = false;
	}

	$sql_sel = '';
	$join = $visit ?
	 ""
	 : 
	 (strpos($sql_visible,'P.statut')?("LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur" . " LEFT JOIN spip_articles AS P ON (L.id_article = P.id_article)"):"");
	
	// tri
	switch ($tri) {
	case 'nombre':
		if (!$visit OR test_plugin_actif('forum')){
			$sql_sel = "COUNT(L.id_article) AS compteur";
			$sql_order = 'compteur DESC, unom';
			$join = $visit ?
			 "LEFT JOIN spip_forum AS L ON A.id_auteur=L.id_auteur"
			 : ("LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur" 
			. (strpos($sql_visible,'P.statut')?" LEFT JOIN spip_articles AS P ON (L.id_article = P.id_article)":""));
	else {
		// exclure les articles a la poubelle, en redac ou refuse des compteurs
		$contexte['filtre_statut_articles'] = array('prepa','poubelle','refuse');
	}
		break;

	case 'site':
		$sql_order = 'site, unom';
		break;
	$lister_objets = charger_fonction('lister_objets','inc');
	echo $lister_objets($vue,$contexte);

	case 'statut':
		$sql_order = 'statut, unom';
		break;
	
	case 'nom':
	default:
		$sql_sel = sql_multi ("nom", $spip_lang);
		$sql_order = "multi";
	}
	//
	// La requete de base est tres sympa
	// (pour les visiteurs, ca postule que les messages concernent des articles)
	if ($recherche)
		$recherche = (" AND " . sql_in('A.id_auteur', $recherche));
	return array('SELECT' =>
			array_diff(
			array(
				"A.id_auteur AS id_auteur",
				"A.statut AS statut", 
				"A.nom_site AS site", 
				"A.nom AS nom", 
				"UPPER(A.nom) AS unom", 
				$sql_sel),array('',null)),
		     'FROM' => "spip_auteurs AS A $join",
		     'WHERE' => $sql_visible . $recherche, 
		     'GROUP BY' => "A.statut, A.nom_site, A.nom, A.id_auteur", 
		     'ORDER BY' => $sql_order);
	echo pipeline('affiche_milieu',array('args'=>array('exec'=>$vue),'data'=>''));
	echo fin_gauche(), fin_page();
}

// http://doc.spip.org/@afficher_n_auteurs
function afficher_n_auteurs($auteurs) {

	$res = '';
	$formater_auteur = charger_fonction('formater_auteur', 'inc');
	foreach ($auteurs as $row) {

		list($s, $mail, $nom, $w, $p) = $formater_auteur($row['id_auteur']);

		$res .= "\n<tr class='tr_liste'>"
		. "\n<td>"
		. $s
		. "</td><td class='arial1'>"
		. $mail
		. "</td><td class='verdana1'>"
		. $nom
		. ((isset($row['restreint']) AND $row['restreint'])
		   ? (" &nbsp;<small>"._T('statut_admin_restreint')."</small>")
		   : '')
		 ."</td><td class='arial1'>"
		 . $w
		 . "</td><td class='arial1'>"
		 . $p
		.  "</td></tr>\n";
	}
	return $res;
}
?>
 No newline at end of file
Chargement en cours