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.'';