Valider e519b908 rédigé par esj's avatar esj
Parcourir les fichiers

Démultiplication des statuts des visiteurs.

Ce dépot installe une réécriture du noyau rationalisant la gestion des statuts, dans la mesure où la compatibilité avec les versions précédentes le permet. Le principe est que Spip connait les noms des statuts fondamentaux Admin (0minirezo) et Rédacteur (1comite), et des statuts transitoires Nouveau et Poubelle, et assimile toute autre valeur dans le champ statut comme étant un statut de visiteur (donc de droits minimums). La création de nouveaux auteurs accepte des statuts de libellé nouveaux, pour autant que SQL le permette (le test est que $statut == addslashes($statut)). En particulier, on peut utiliser des variantes du squelette formulaires/login_forum dans lequel le paramètre "mode" du script "inscription" a une valeur autre que "6forum", par exemple le numéro du forum si l'on souhaite structurer les groupes de visiteurs sur la base des forums qui les ont attiré sur le site. 

Une fois qu'un statut a été introduit dans la table des auteurs, il est proposé dans le menu des statuts affectable à un auteur. Le mode de tri par statut est à présent actif sur la page des visiteurs pour tenir compte de cette nouvelle situation. Toutefois les icones seront les memes (à améliorer).

Les occurrences de "6forum" ont donc été évacuées du code de SPIP, hormis les cas nécessaires à la compatibilité (cette fonctionnalité n'amène aucun dysfonctionnement pour les sites qui ne l'utiliseront pas). Incidemment, le paramètre "statut" du script "auteurs" admet en argument non plus seulement un statut mais éventuellement une liste de statuts séparés par des virgules, et admet un "!" au début pour signifier une négation. 

En outre, il existe à présent une fonction "avoir_visiteurs" regroupant tous les cas où cette information est nécessaire, ce qui auparavant était réalisé de manière pas toujours cohérente voire fausse (il y aura de ce fait des réponses légèrement différentes d'auparavant sur des cas limites).
parent b9c6f313
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -11,7 +11,7 @@

<p align="center">

&#91;<a[ href="(#ENV{inscription})&amp;mode=forum[(&amp;id_rubrique=(#ENV{id_rubrique})]&amp;focus=nom_inscription"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=500'); return false;"><:login_sinscrire:></a>&#93;
&#91;<a[ href="(#ENV{inscription})&amp;mode=6forum[(&amp;id_rubrique=(#ENV{id_rubrique})]&amp;focus=nom_inscription"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=500'); return false;"><:login_sinscrire:></a>&#93;

&#91;<a[ href="(#ENV{oubli})"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;"><:login_motpasseoublie:></a>&#93;

+2 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -199,8 +199,8 @@ function action_legender_auteur_post($r) {
	if ($statut = _request('statut')
	AND autoriser('modifier', 'auteur', $id_auteur, $qui = null,
	$opt = array('statut'=>$statut))) {
		if (!in_array($statut,$GLOBALS['liste_des_statuts'])) {
		  spip_log("action_instituer_auteur_dist: $statut incompris  pour $id_auteur");
		  if ($statut != addslashes($statut)) {
		  spip_log("action_editer_auteur_dist: $statut incompris  pour $id_auteur");
		} else {
			spip_query("UPDATE spip_auteurs SET statut="._q($statut) . " WHERE id_auteur=" . _q($id_auteur));
		}
+3 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -93,10 +93,10 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour)
	if ($type == "abo") {
		if (!$GLOBALS["auteur_session"]) {
			return array('formulaires/login_forum', 0,
				array('inscription' => generer_url_public('spip_inscription'),
					'oubli' => generer_url_public('spip_pass')));
					array('inscription' => generer_url_public('', 'action=inscription'),
						'oubli' => generer_url_public('', 'action=pass')));
		} else {
		// forcer ces valeur
		// forcer ces valeurs
			$auteur = $GLOBALS['auteur_session']['nom'];
			$email_auteur = $GLOBALS['auteur_session']['email'];
		}
+5 −4
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -22,7 +22,7 @@ function balise_FORMULAIRE_INSCRIPTION ($p) {
	return calculer_balise_dynamique($p, 'FORMULAIRE_INSCRIPTION', array());
}

// args[0] peut valoir "redac" ou "forum" 
// args[0] un statut d'auteur (1comite par defaut)
// args[1] indique la rubrique eventuelle de proposition
// args[2] indique le focus eventuel
// [(#FORMULAIRE_INSCRIPTION{nom_inscription, #ID_RUBRIQUE})]
@@ -31,7 +31,7 @@ function balise_FORMULAIRE_INSCRIPTION ($p) {
function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) {
	list($mode, $id, $focus) = $args;
	//initialiser_mode_inscription
	if(!$mode) $mode = $GLOBALS['meta']['accepter_inscriptions'] == 'oui' ? 'redac' : ''; 
	if(!$mode) $mode = $GLOBALS['meta']['accepter_inscriptions'] == 'oui' ? '1comite' : ''; 
	if (!test_mode_inscription($mode))
		return '';
	else return array($mode, $focus, $id);
@@ -84,8 +84,9 @@ function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id=0) {
// http://doc.spip.org/@test_mode_inscription
function test_mode_inscription($mode) {

	return (($mode == 'redac' AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui')
		OR ($mode == 'forum'
  return (($mode == '1comite'  OR ($mode == 'redac') // redac: compatibilite
		AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui')
	  OR ($mode == addslashes($mode) // mode libre mais syntaxe propre
		AND ($GLOBALS['meta']['accepter_visiteurs'] == 'oui'
			OR $GLOBALS['meta']['forums_publics'] == 'abo')));
}
+10 −14
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -20,21 +20,17 @@ function configuration_visiteurs_dist()
{
	global $spip_lang_left ;

	if ($n = ($forums_publics<>'abo')) {
			$n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_articles WHERE accepter_forum='abo' LIMIT 1"));
			$n = !$n['n'];
	}
	if ($n) {
		$res = "<table border='0' cellspacing='1' cellpadding='3' width=\"100%\">";
		$res .= "\n<tr><td class='verdana2'>";
		$res .= _T('info_question_accepter_visiteurs');
		$res .= "</td></tr>";
		$res .= "\n<tr><td style='text-align: $spip_lang_left' class='verdana2'>";
		$res .= afficher_choix('accepter_visiteurs', $GLOBALS['meta']['accepter_visiteurs'],
	if (!avoir_visiteurs()) {
		$res = "<table border='0' cellspacing='1' cellpadding='3' width=\"100%\">"
		. "\n<tr><td class='verdana2'>"
		. _T('info_question_accepter_visiteurs')
		. "</td></tr>"
		. "\n<tr><td style='text-align: $spip_lang_left' class='verdana2'>"
		. afficher_choix('accepter_visiteurs', $GLOBALS['meta']['accepter_visiteurs'],
				       array('oui' => _T('info_option_accepter_visiteurs'),
					'non' => _T('info_option_ne_pas_accepter_visiteurs')));
		$res .= "</td></tr>\n";
		$res .= "</td></tr></table>\n";
					'non' => _T('info_option_ne_pas_accepter_visiteurs')))
		. "</td></tr>\n"
		. "</td></tr></table>\n";

		$res = ajax_action_post('configurer', 'visiteurs', 'config_contenu','',$res);
	} else {
Chargement en cours