Add select_dolgroups

This commit is contained in:
Regis Houssin 2010-11-08 19:04:52 +00:00
parent d20a3c64ba
commit 729050cf5c
2 changed files with 72 additions and 54 deletions

View File

@ -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.= '<select class="flat" name="'.$htmlname.'"'.($disabled?' disabled="true"':'').'>';
if ($show_empty) $out.= '<option value="-1"'.($id==-1?' selected="selected"':'').'>&nbsp;</option>'."\n";
$num = $this->db->num_rows($resql);
$i = 0;
if ($num)
{
while ($i < $num)
{
$obj = $this->db->fetch_object($resql);
$disableline=0;
if (is_array($enableonly) && sizeof($enableonly) && ! in_array($obj->rowid,$enableonly)) $disableline=1;
$out.= '<option value="'.$obj->rowid.'"';
if ($disableline) $out.= ' disabled="true"';
if ((is_object($selected) && $selected->id == $obj->rowid) || (! is_object($selected) && $selected == $obj->rowid))
{
$out.= ' selected="selected"';
}
$out.= '>';
$out.= $obj->nom;
$out.= '</option>';
$i++;
}
}
$out.= '</select>';
}
else
{
dol_print_error($this->db);
}
return $out;
}
}
?>

View File

@ -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 '<table class="noborder" width="100%">'."\n";
print '<tr class="liste_titre"><td class="liste_titre" width="25%">'.$langs->trans("GroupsToAdd").'</td>'."\n";
print '<td>';
print $form->selectarray("group",$uss);
print $form->select_dolgroups('','group',0,$grouplistid);
print ' &nbsp; ';
print '<input type="submit" class="button" value="'.$langs->trans("Add").'">';
print '</td></tr>'."\n";