FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 27-10-2014 17:12:39

kastor
Membre
Inscription : 15-02-2014
Messages : 12

utilisateur qui choisit lui-même son groupe

Salut à tous, je voudrais que mes nouveaux inscrits puissent choisir leur groupe tout seul, comme des grands.

De toutes mes recherches, celles qui s'en approchent le plus, c'est celle-ci: http://fluxbb.fr/forums/viewtopic.php?id=12527 mais aucune trace d'une solution.

Donc, à l'inscription, les membres choisissent un groupe et ils héritent de leurs droits directement. plus besoin pour l'administrateur du forum de "valider" ou "choisir" le groupe adéquat.... ça limite un peu le travail car je ne connais pas tous les inscrits personnellement.

édit: question subsidiaire: L'administrateur du forum devrait pouvoir le changer de groupe au besoin, donc choisir son groupe à l'inscription c'est bien, mais ne pas l'autoriser à en changer par la suite ce serait mieux....


Kastor; Jamais en retard, rarement à l'avance, toujours à l'heure....

Hors ligne

#2 27-10-2014 23:11:59

Cr@sh_
Membre
Inscription : 02-09-2011
Messages : 85
Site Web

Re : utilisateur qui choisit lui-même son groupe

Bonsoir,

C'est presque la même demande que dans l'autre conversation, c'est une demande assez spécifique. A mon avis tu vas devoir la développer toi même, après tu peux toujours demander des solutions ici, si tu as des soucis au niveau de la programmation. smile

Cordialement.


Administrateur et fondateur de Geek-Community

Hors ligne

#3 27-10-2014 23:49:03

kastor
Membre
Inscription : 15-02-2014
Messages : 12

Re : utilisateur qui choisit lui-même son groupe

ça ne m'aide pas beaucoup... ^^
Je croyais que je ne trouvais pas cette fonction, mais en fait, ça n'existe pas?


Kastor; Jamais en retard, rarement à l'avance, toujours à l'heure....

Hors ligne

#4 28-10-2014 09:44:51

SnowLedd
Membre
Inscription : 29-12-2013
Messages : 11

Re : utilisateur qui choisit lui-même son groupe

EDIT: voir http://fluxbb.fr/forums/viewtopic.php?p … 49#p112549

Salut,

Suffit de changer $intial_group_id je pense.

J'ai fais un petit quelque chose si tu veux dans ton fichier register.php.

Tu rajoute dans id_not_allow les groupes qui ne doivent pas être proposés. (Moi j'ai mis Administrateurs et Modérateurs)
Rajouter

$allow_grp = array();
$id_not_allow = array(1, 2);
$result = $db->query('SELECT g_id, g_title FROM '.$db->prefix.'groups WHERE g_id NOT IN ('.implode(',',$id_not_allow).')') or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());

while($tmp = $db->fetch_assoc($result)){
	$allow_grp[] = $tmp;
}

Après

$errors = array();

puis

if (isset($_POST['defaut_group']) && is_numeric($_POST['defaut_group']) && !in_array($_POST['defaut_group'], $id_not_allow)){
	$intial_group_id = $_POST['defaut_group'];
}
else
	$intial_group_id = ($pun_config['o_regs_verify'] == '0') ? $pun_config['o_default_user_group'] : PUN_UNVERIFIED;

après

$language = $pun_config['o_default_lang'];

puis

<div class="inform">
	<fieldset>
		<legend>Groupe par défaut</legend>
		<div class="infldset">
			<p>Dans quel groupe sougaitez vous être ?</p>
			<select name="defaut_group">
<?php
			foreach ($allow_grp as $grp){
				echo "\t\t\t\t\t\t\t\t".'<option value="'.$grp['g_id'].'">'.$grp['g_title'].'</option>'."\n";
			}
?>
			</select>
		</div>
	</fieldset>
</div>

La ou tu veux l'afficher lors de l'inscription.

(Moi je lai mis après

<div class="inform">
	<fieldset>
		<legend><?php echo $lang_prof_reg['Privacy options legend'] ?></legend>
		<div class="infldset">
			<p><?php echo $lang_prof_reg['Email setting info'] ?></p>
			<div class="rbox">
				<label><input type="radio" name="email_setting" value="0"<?php if ($email_setting == '0') echo ' checked="checked"' ?> /><?php echo $lang_prof_reg['Email setting 1'] ?><br /></label>
				<label><input type="radio" name="email_setting" value="1"<?php if ($email_setting == '1') echo ' checked="checked"' ?> /><?php echo $lang_prof_reg['Email setting 2'] ?><br /></label>
				<label><input type="radio" name="email_setting" value="2"<?php if ($email_setting == '2') echo ' checked="checked"' ?> /><?php echo $lang_prof_reg['Email setting 3'] ?><br /></label>
			</div>
		</div>
	</fieldset>
</div>

) Voilà.

Dites moi ce que vous en dites.

EDIT: J'avais pas tout lu. Si tu veux, je peux te faire un petit plugin qui permet de gérer les groupes à autoriser ou non.

Par contre, je n'ai pas très bien compris l'histoire de l'admin qui change le groupe sans avoir le droit (ou je sais pas quoi)

Dernière modification par SnowLedd (28-10-2014 17:08:10)

Hors ligne

#5 28-10-2014 16:45:01

PascL
Membre
Inscription : 06-09-2007
Messages : 554
Site Web

Re : utilisateur qui choisit lui-même son groupe

Salut,

Par défaut, un membre ne peut changer son groupe de lui-même (sauf si c'est un forum à auto-promotion/rangs en v1.5.x). L'administrateur le peut dans le profil de chaque membre.

Hors ligne

#6 28-10-2014 17:07:35

SnowLedd
Membre
Inscription : 29-12-2013
Messages : 11

Re : utilisateur qui choisit lui-même son groupe

J'ai essayé un petit quelque chose, l'utilisateur peut choisir lors de son inscription dans quel groupe il veut être. La liste est administrable depuis l'administration:

Utilisation:
Il faut tout d'abord l'installer. (via le plugin). Il va créer 2 tuples dans la table config. La première contient un tableau des  groupes pouvant être choisis, la seconde l'état du plugin. (activé/désactivé). Si il est désactivé, l'utilisation reste la même qu'avant l'installation du plugin. On n'a pas l'affichage du champs lors de l'inscription et si l'administrateur a activé la vérification par mail, elle est effectuée.

Voici tout d'abord le fichier plugins/AP_Groups.php:

<?php
// Make sure no one attempts to run this script "directly"
if (!defined('PUN'))
	exit;

// Tell admin_loader.php that this is indeed a plugin and that it is loaded
define('PUN_PLUGIN_LOADED', 1);

if (!defined('FORUM_CACHE_FUNCTIONS_LOADED'))
	require PUN_ROOT.'include/cache.php';

if(isset($_POST['install']) && !isset($pun_config['allow_groups'])){
	$db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'allow_groups\', NULL)') or error('Unable to insert config group', __FILE__, __LINE__, $db->error());
	$db->query('INSERT INTO '.$db->prefix.'config (conf_name, conf_value) VALUES(\'active_allow_groups\', 1)') or error('Unable to insert config group', __FILE__, __LINE__, $db->error());
	generate_config_cache();
	redirect('admin_loader.php?plugin=AP_Groups.php', 'Plugin installé.');
}

if(isset($_POST['display']) && is_numeric($_POST['display'])){
	$db->query('UPDATE '.$db->prefix.'config SET conf_value="'.$_POST['display'].'" WHERE conf_name="active_allow_groups"') or error('Unable to update points', __FILE__, __LINE__, $db->error());
	generate_config_cache();
	redirect('admin_loader.php?plugin=AP_Groups.php', 'Plugin installé.');
}

if (isset($_POST['post'])){
	if (empty($_POST['grp'])){
		message('Aucun groupe sélectionné');
	}

	$unencode = array();

	foreach ($_POST['grp'] as $key) {
		if($key != 1 OR $key != 2)
			$unencode[] = $key;
	}
	$encode = json_encode($unencode, true);
	$db->query('UPDATE '.$db->prefix.'config SET conf_value="'.$db->escape($encode).'" WHERE conf_name="allow_groups"') or error('Unable to update points', __FILE__, __LINE__, $db->error());

	generate_config_cache();
	redirect('admin_loader.php?plugin=AP_Groups.php', 'Groupes mis à jours.');
}

// Display the admin navigation menu
generate_admin_menu($plugin);

?>

<?php 
if(!array_key_exists('allow_groups', $pun_config)){
?>
<div class="blockform">
	<div class="box">
			<form method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
				<div class="inform">
					<fieldset>
						<legend>Installer le plugin</legend>
						<div class="infldset">

						</div>
					</fieldset>
				</div>
			<p class="submitend"><input type="submit" name="install" value="Go!" tabindex="1" /></p>
		</form>
	</div>
</div>
<?php
} else {
?>
<div class="blockform">
	<h2 class="block2"><span>Options</span></h2>
	<div class="box">
		<form method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
			<fieldset>
				<div class="infldset">
					<table class="aligntop" cellspacing="0">
						<tr>
							<th scope="row">Activer/désactiver le plugin</th>
							<td>
							<input type="radio" name="display" value="1" <?php if ($pun_config['active_allow_groups'] == '1') echo ' checked="checked"' ?> />&nbsp;
							<strong>Oui</strong>&nbsp;&nbsp;&nbsp;
							<input type="radio" name="display" value="0" <?php if ($pun_config['active_allow_groups'] == '0') echo ' checked="checked"' ?>/>&nbsp;
							<strong>Non</strong>
							</td>
						</tr>
					</table>
				</div>
			</fieldset>
			<p class="submitend"><input type="submit" name="config" value="Go!" tabindex="1" /></p>
		</form>
	</div>
</div>
<div class="blockform">
	<h2 class="block2"><span>Configuration</span></h2>
	<div class="box">
			<form id="post" method="post" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
				<div class="inform">
					<fieldset>
						<legend>Ajouter/Supprimer un groupe</legend>
						<div class="infldset">
							<table class="aligntop" cellspacing="0">
								<tr>
									<th scope="row">Groupes</th>
									<td>
										<select name="grp[]" multiple="multiple" size="9">
											<?php

					$result = $db->query('SELECT g_id, g_title FROM '.$db->prefix.'groups WHERE g_id NOT IN (1,2)') or error('Unable to fetch groups info', __FILE__, __LINE__, $db->error());
					$unencode = json_decode($pun_config['allow_groups'], true);
					var_dump($unencode);
					while ($group = $db->fetch_assoc($result)){
						if(in_array($group['g_id'], $unencode))
							echo '<option value="'.$group['g_id'].'" selected="selected">'.pun_htmlspecialchars($group['g_title'])." -> Authorisé";
						else
							echo '<option value="'.$group['g_id'].'">'.pun_htmlspecialchars($group['g_title'])." -> Non authorisé";
					}

											?>
										</select>
									</td>
								</tr>
							</table>
						</div>
					</fieldset>
				</div>
			<p class="submitend"><input type="submit" name="post" value="Go!" tabindex="1" /></p>
		</form>
	</div>
</div>
<?php
}
?>

Et les modifications du fichier register.php (Ne pas faire les modifications du post précédent):

Rajouter:

$allow_or_not = json_decode($pun_config['allow_groups'], true);

if($allow_or_not == Null){
	$allow_or_not = array(1, 2);
	$result = $db->query('SELECT g_id, g_title FROM '.$db->prefix.'groups WHERE g_id NOT IN ('.implode(',',$allow_or_not).')') or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());

	while($tmp = $db->fetch_assoc($result)){
		$allow_grp[] = $tmp;
	}
} else {
	$result = $db->query('SELECT g_id, g_title FROM '.$db->prefix.'groups WHERE g_id  IN ('.implode(',',$allow_or_not).')') or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());

	while($tmp = $db->fetch_assoc($result)){
		$allow_grp[] = $tmp;
	}
}

après

// Start with a clean slate
$errors = array();

---------
Rajouter:

	if (isset($_POST['defaut_group']) && is_numeric($_POST['defaut_group']) && !in_array($_POST['defaut_group'], $allow_grp))
	{
		$intial_group_id = $_POST['defaut_group'];
	}
	else
		$intial_group_id = $pun_config['o_default_user_group'];

après

	// Make sure we got a valid language string
	if (isset($_POST['language']))
	{
		$language = preg_replace('%[\.\\\/]%', '', $_POST['language']);
		if (!file_exists(PUN_ROOT.'lang/'.$language.'/common.php'))
			message($lang_common['Bad request'], false, '404 Not Found');
	}
	else
		$language = $pun_config['o_default_lang'];

--------
Remplacer:

$intial_group_id = ($pun_config['o_regs_verify'] == '0') ? $pun_config['o_default_user_group'] : PUN_UNVERIFIED;

par:

		if(!array_key_exists('active_allow_groups', $pun_config)){
			$intial_group_id = ($pun_config['o_regs_verify'] == '0') ? $pun_config['o_default_user_group'] : PUN_UNVERIFIED;
		} else if (isset($pun_config['active_allow_groups']) && $pun_config['active_allow_groups'] == 0){
			$intial_group_id = ($pun_config['o_regs_verify'] == '0') ? $pun_config['o_default_user_group'] : PUN_UNVERIFIED;
		}

---------
Rajouter:

<?php 
if(array_key_exists('active_allow_groups', $pun_config)){
	if($pun_config['active_allow_groups'] == 1){
?>
			<div class="inform">
				<fieldset>
					<legend>Groupe par défaut</legend>
					<div class="infldset">
						<p>Dans quel groupe sougaitez vous être ?</p>
						<select name="defaut_group">
<?php
						foreach ($allow_grp as $grp){
							echo "\t\t\t\t\t\t\t\t".'<option value="'.$grp['g_id'].'">'.$grp['g_title'].'</option>'."\n";
						}
?>
						</select>
					</div>
				</fieldset>
			</div>
<?php
	}
}

La ou tu veux afficher le choix sur la page. (moi je l'ai mis après les options emails)
Exemple -> Après:

<div class="inform">
	<fieldset>
		<legend><?php echo $lang_prof_reg['Privacy options legend'] ?></legend>
		<div class="infldset">
			<p><?php echo $lang_prof_reg['Email setting info'] ?></p>
			<div class="rbox">
				<label><input type="radio" name="email_setting" value="0"<?php if ($email_setting == '0') echo ' checked="checked"' ?> /><?php echo $lang_prof_reg['Email setting 1'] ?><br /></label>
				<label><input type="radio" name="email_setting" value="1"<?php if ($email_setting == '1') echo ' checked="checked"' ?> /><?php echo $lang_prof_reg['Email setting 2'] ?><br /></label>
				<label><input type="radio" name="email_setting" value="2"<?php if ($email_setting == '2') echo ' checked="checked"' ?> /><?php echo $lang_prof_reg['Email setting 3'] ?><br /></label>
			</div>
		</div>
	</fieldset>
</div>

Note: J'ai remarqué que l'idgroup était a 0 lorsque la demande de vérification par mail (envoi du mot de passe) était activée. J'ai forcé cette vérification quand le plugin est activé. 0 correspond a PUN_UNVERIFIED.

Hors ligne

#7 29-10-2014 13:39:31

kastor
Membre
Inscription : 15-02-2014
Messages : 12

Re : utilisateur qui choisit lui-même son groupe

Merci, je vais tester ça dès que possible....

Pour l'histoire de l'admin qui gère etc...
C'est juste que les utilisateurs peuvent choisir leur groupe (imaginons les élèves d'une classe), mais le prof (admin) constate une erreur, et il change de groupe un élève tout simplement.

Merci


Kastor; Jamais en retard, rarement à l'avance, toujours à l'heure....

Hors ligne

#8 29-10-2014 14:02:33

SnowLedd
Membre
Inscription : 29-12-2013
Messages : 11

Re : utilisateur qui choisit lui-même son groupe

L'administrateur du forum peut changer de groupe un membre. Il suffit d'aller sur le profil du membre -> administration

Hors ligne

#9 29-10-2014 18:04:58

kastor
Membre
Inscription : 15-02-2014
Messages : 12

Re : utilisateur qui choisit lui-même son groupe

oui, merci, ça je sais.

Je me suis juste embrouillé un peu dans ma demande.

Si l'utilisateur choisit un mauvais groupe, et que l'administrateur le remet dans le bon, qu'est ce qui empêche à l'utilisateur d'y retourner? C'est pourquoi, je voudrais qu'on puisse choisir à l'inscription son groupe et puis nulle part ailleurs.

Pour l'instant, je bascule tout les nouveaux inscrits dans un topic "présentation" où ils doivent me préciser dans quels groupes ils sont. Mais comme je connais pas tout le monde, c'est assez galère, de plus à chaque inscrit je dois les mettre dans un groupe, donc une action à chaque inscrit, et comme par hasard, ils veulent toujours que ce soit fait en "direct".... d'où obligation de se connecter assez régulièrement....


Kastor; Jamais en retard, rarement à l'avance, toujours à l'heure....

Hors ligne

#10 29-10-2014 20:15:04

SnowLedd
Membre
Inscription : 29-12-2013
Messages : 11

Re : utilisateur qui choisit lui-même son groupe

Je pense que http://fluxbb.fr/forums/viewtopic.php?p … 49#p112549 fera l'affaire alors

Hors ligne

Pied de page des forums