diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index deadbbb248c..0be811de8d8 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -786,7 +786,7 @@ class Form if (is_array($include) && $includeUsers) $sql.= " AND u.rowid IN ('".$includeUsers."')"; $sql.= " ORDER BY u.name ASC"; - dol_syslog("Form::select_users sql=".$sql); + dol_syslog("Form::select_dolusers sql=".$sql); $resql=$this->db->query($sql); if ($resql) { @@ -3224,6 +3224,76 @@ class Form return $ret; } + + /** + * Return select list of groups + * @param selected Id group preselected + * @param htmlname Field name in form + * @param show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue + * @param exclude Array list of groups id to exclude + * @param disabled If select list must be disabled + * @param include Array list of groups id to include + * @param enableonly Array list of groups id to be enabled. All other must be disabled + */ + function select_dolgroups($selected='',$htmlname='groupid',$show_empty=0,$exclude='',$disabled=0,$include='',$enableonly='') + { + global $conf; + + // Permettre l'exclusion de groupes + if (is_array($exclude)) $excludeGroups = implode("','",$exclude); + // Permettre l'inclusion de groupes + if (is_array($include)) $includeGroups = implode("','",$include); + + $out=''; + + // On recherche les groupes + $sql = "SELECT ug.rowid, ug.nom "; + $sql.= " FROM ".MAIN_DB_PREFIX."usergroup as ug "; + $sql.= " WHERE ug.entity IN (0,".$conf->entity.")"; + if (is_array($exclude) && $excludeGroups) $sql.= " AND ug.rowid NOT IN ('".$excludeGroups."')"; + if (is_array($include) && $includeGroups) $sql.= " AND ug.rowid IN ('".$includeGroups."')"; + $sql.= " ORDER BY ug.nom ASC"; + + dol_syslog("Form::select_dolgroups sql=".$sql); + $resql=$this->db->query($sql); + if ($resql) + { + $out.= ''; + } + else + { + dol_print_error($this->db); + } + + return $out; + } + } ?> diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php index f4673baf117..bcc77210ee3 100644 --- a/htdocs/user/fiche.php +++ b/htdocs/user/fiche.php @@ -1214,58 +1214,6 @@ else dol_print_error($db); } - $idList = implode(",",$grouplistid); - - if (!empty($idList)) - { - $sql = "SELECT ug.rowid, ug.nom "; - $sql.= " FROM ".MAIN_DB_PREFIX."usergroup as ug "; - $sql.= " WHERE ug.entity IN (0,".$conf->entity.")"; - $sql.= " AND ug.rowid NOT IN (".$idList.")"; - $sql.= " ORDER BY ug.nom"; - - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - - while ($i < $num) - { - $obj = $db->fetch_object($resql); - $uss[$obj->rowid] = $obj->nom; - $i++; - } - } - else { - dol_print_error($db); - } - } - else - { - $sql = "SELECT ug.rowid, ug.nom "; - $sql.= " FROM ".MAIN_DB_PREFIX."usergroup as ug "; - $sql.= " WHERE ug.entity IN (0,".$conf->entity.")"; - $sql.= " ORDER BY ug.nom"; - - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - - while ($i < $num) - { - $obj = $db->fetch_object($resql); - - $uss[$obj->rowid] = $obj->nom; - $i++; - } - } - else { - dol_print_error($db); - } - } $db->free($resql); if ($caneditgroup) @@ -1277,7 +1225,7 @@ else print '
| '.$langs->trans("GroupsToAdd").' | '."\n"; print ''; - print $form->selectarray("group",$uss); + print $form->select_dolgroups('','group',0,$grouplistid); print ' '; print ''; print ' |