Le site des utilisateurs francophones de FluxBB.
Vous n'êtes pas identifié(e).
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
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. 
Cordialement.
Administrateur et fondateur de Geek-Community
Hors ligne
ç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
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
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.
Bouh !
StarShip Renaissance
Hors ligne
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"' ?> />
<strong>Oui</strong>
<input type="radio" name="display" value="0" <?php if ($pun_config['active_allow_groups'] == '0') echo ' checked="checked"' ?>/>
<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
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
L'administrateur du forum peut changer de groupe un membre. Il suffit d'aller sur le profil du membre -> administration
Hors ligne
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
Je pense que http://fluxbb.fr/forums/viewtopic.php?p … 49#p112549 fera l'affaire alors
Hors ligne