diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php
index 328fd63383c..5903d7e35c3 100644
--- a/htdocs/user/class/usergroup.class.php
+++ b/htdocs/user/class/usergroup.class.php
@@ -146,11 +146,14 @@ class UserGroup extends CommonObject
{
while ($obj = $this->db->fetch_object($result))
{
- $newgroup=new UserGroup($this->db);
- $newgroup->fetch($obj->rowid);
- $newgroup->usergroup_entity = $obj->usergroup_entity;
+ if (! array_key_exists($obj->rowid, $ret))
+ {
+ $newgroup=new UserGroup($this->db);
+ $newgroup->fetch($obj->rowid);
+ $ret[$obj->rowid]=$newgroup;
+ }
- $ret[]=$newgroup;
+ $ret[$obj->rowid]->usergroup_entity[]=$obj->usergroup_entity;
}
$this->db->free($result);
@@ -181,7 +184,7 @@ class UserGroup extends CommonObject
$sql.= " ".MAIN_DB_PREFIX."usergroup_user as ug";
$sql.= " WHERE ug.fk_user = u.rowid";
$sql.= " AND ug.fk_usergroup = ".$this->id;
- if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
+ if (! empty($conf->multicompany->enabled) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
$sql.= " AND u.entity IS NOT NULL";
}
@@ -189,17 +192,21 @@ class UserGroup extends CommonObject
{
$sql.= " AND u.entity IN (0,".$conf->entity.")";
}
+
dol_syslog(get_class($this)."::listUsersForGroup sql=".$sql,LOG_DEBUG);
$result = $this->db->query($sql);
if ($result)
{
while ($obj = $this->db->fetch_object($result))
{
- $newuser=new User($this->db);
- $newuser->fetch($obj->rowid);
- $newuser->usergroup_entity = $obj->usergroup_entity;
+ if (! array_key_exists($obj->rowid, $ret))
+ {
+ $newuser=new User($this->db);
+ $newuser->fetch($obj->rowid);
+ $ret[$obj->rowid]=$newuser;
+ }
- $ret[]=$newuser;
+ $ret[$obj->rowid]->usergroup_entity[]=$obj->usergroup_entity;
}
$this->db->free($result);
diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php
index 66c26c6660e..780422e8246 100644
--- a/htdocs/user/fiche.php
+++ b/htdocs/user/fiche.php
@@ -1394,8 +1394,17 @@ else
print '';
if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode) && $conf->entity == 1 && $user->admin && ! $user->entity)
{
- $mc->getInfo($group->usergroup_entity);
- print '
'.$mc->label." | ";
+ print '';
+ if (! empty($group->usergroup_entity))
+ {
+ $nb=0;
+ foreach($group->usergroup_entity as $group_entity)
+ {
+ $mc->getInfo($group_entity);
+ print ($nb > 0 ? ', ' : '').$mc->label;
+ $nb++;
+ }
+ }
}
print ' | ';
if ($caneditgroup)
diff --git a/htdocs/user/group/fiche.php b/htdocs/user/group/fiche.php
index e7b7a99d932..72186008c3c 100644
--- a/htdocs/user/group/fiche.php
+++ b/htdocs/user/group/fiche.php
@@ -354,7 +354,7 @@ else
if (! empty($object->members))
{
- if( !($conf->multicompany->enabled && $conf->multicompany->transverse_mode))
+ if (! ($conf->multicompany->enabled && $conf->multicompany->transverse_mode))
{
foreach($object->members as $useringroup)
{
@@ -404,7 +404,7 @@ else
print ' | '.$langs->trans("Login").' | ';
print ''.$langs->trans("Lastname").' | ';
print ''.$langs->trans("Firstname").' | ';
- if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
+ if (! empty($conf->multicompany->enabled) && $conf->entity == 1)
{
print ''.$langs->trans("Entity").' | ';
}
@@ -428,10 +428,20 @@ else
print '';
print ''.$useringroup->lastname.' | ';
print ''.$useringroup->firstname.' | ';
- if(! empty($conf->multicompany->enabled) && $conf->entity == 1)
+ if (! empty($conf->multicompany->enabled) && $conf->entity == 1)
{
- $mc->getInfo($useringroup->usergroup_entity);
- print ''.$mc->label." | ";
+ print '';
+ if (! empty($useringroup->usergroup_entity))
+ {
+ $nb=0;
+ foreach($useringroup->usergroup_entity as $group_entity)
+ {
+ $mc->getInfo($group_entity);
+ print ($nb > 0 ? ', ' : '').$mc->label;
+ $nb++;
+ }
+ }
+ print ' | ';
}
print ''.$useringroup->getLibStatut(3).' | ';
print '';
diff --git a/htdocs/user/group/index.php b/htdocs/user/group/index.php
index f0e34feffc0..fd2857452d0 100644
--- a/htdocs/user/group/index.php
+++ b/htdocs/user/group/index.php
@@ -55,10 +55,10 @@ llxHeader();
print_fiche_titre($langs->trans("ListOfGroups"));
-$sql = "SELECT g.rowid, g.nom, g.entity, g.datec, COUNT(ugu.rowid) as nb";
+$sql = "SELECT g.rowid, g.nom, g.entity, g.datec, COUNT(DISTINCT ugu.fk_user) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."usergroup as g";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."usergroup_user as ugu ON ugu.fk_usergroup = g.rowid";
-if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && ($conf->multicompany->transverse_mode || ($user->admin && ! $user->entity)))
+if (! empty($conf->multicompany->enabled) && $conf->entity == 1 && ($conf->multicompany->transverse_mode || ($user->admin && ! $user->entity)))
{
$sql.= " WHERE g.entity IS NOT NULL";
}
@@ -100,13 +100,13 @@ if ($resql)
print " | ";
print '| '.img_object($langs->trans("ShowGroup"),"group").' '.$obj->nom.'';
- if (!$obj->entity)
+ if (! $obj->entity)
{
print img_picto($langs->trans("GlobalGroup"),'redstar');
}
print " | ";
//multicompany
- if(! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1)
+ if (! empty($conf->multicompany->enabled) && empty($conf->multicompany->transverse_mode) && $conf->entity == 1)
{
$mc->getInfo($obj->entity);
print ''.$mc->label.' | ';