diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php
index 6a2a1b774e7..a54869afa18 100644
--- a/htdocs/user/class/user.class.php
+++ b/htdocs/user/class/user.class.php
@@ -2744,13 +2744,23 @@ class User extends CommonObject
// Init $this->users array
$sql = "SELECT DISTINCT u.rowid, u.firstname, u.lastname, u.fk_user, u.fk_soc, u.login, u.email, u.gender, u.admin, u.statut, u.photo, u.entity"; // Distinct reduce pb with old tables with duplicates
$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
- if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) || (! empty($user->admin) && empty($user->entity))))
+ if (! empty($conf->multicompany->enabled))
{
- $sql.= " WHERE u.entity IS NOT NULL";
+ if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
+ if ($conf->entity == 1 && ! empty($user->admin) && empty($user->entity)) {
+ $sql.= " WHERE u.entity IS NOT NULL";
+ } else {
+ $sql.= ",".MAIN_DB_PREFIX."usergroup_user as ug";
+ $sql.= " WHERE ug.fk_user = u.rowid";
+ $sql.= " AND ug.entity IN (".getEntity('user').")";
+ }
+ } else {
+ $sql.= " WHERE u.entity IN (".getEntity('user').")";
+ }
}
else
{
- $sql.= " WHERE u.entity IN (".getEntity('user').")";
+ $sql.= " WHERE u.entity = IN (".getEntity('user').")";
}
if ($filter) $sql.=" AND ".$filter;
diff --git a/htdocs/user/home.php b/htdocs/user/home.php
index 6600d262002..fddb31653cf 100644
--- a/htdocs/user/home.php
+++ b/htdocs/user/home.php
@@ -89,7 +89,7 @@ print '
';
*/
$max=10;
-$sql = "SELECT u.rowid, u.lastname, u.firstname, u.admin, u.login, u.fk_soc, u.datec, u.statut";
+$sql = "SELECT DISTINCT u.rowid, u.lastname, u.firstname, u.admin, u.login, u.fk_soc, u.datec, u.statut";
$sql.= ", u.entity";
$sql.= ", u.ldap_sid";
$sql.= ", u.photo";
@@ -101,13 +101,23 @@ $sql.= ", s.code_client";
$sql.= ", s.canvas";
$sql.= " FROM ".MAIN_DB_PREFIX."user as u";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON u.fk_soc = s.rowid";
-if (! empty($conf->multicompany->enabled) && $conf->entity == 1 && ($conf->global->MULTICOMPANY_TRANSVERSE_MODE || ($user->admin && ! $user->entity)))
+if (! empty($conf->multicompany->enabled))
{
- $sql.= " WHERE u.entity IS NOT NULL";
+ if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
+ if ($conf->entity == 1 && ! empty($user->admin) && empty($user->entity)) {
+ $sql.= " WHERE u.entity IS NOT NULL";
+ } else {
+ $sql.= ",".MAIN_DB_PREFIX."usergroup_user as ug";
+ $sql.= " WHERE ug.fk_user = u.rowid";
+ $sql.= " AND ug.entity IN (".getEntity('user').")";
+ }
+ } else {
+ $sql.= " WHERE u.entity IN (".getEntity('user').")";
+ }
}
else
{
- $sql.= " WHERE u.entity IN (0,".$conf->entity.")";
+ $sql.= " WHERE u.entity = IN (".getEntity('user').")";
}
if (!empty($socid)) $sql.= " AND u.fk_soc = ".$socid;
$sql.= $db->order("u.datec","DESC");
diff --git a/htdocs/user/index.php b/htdocs/user/index.php
index b5edbafa89e..52c38497cea 100644
--- a/htdocs/user/index.php
+++ b/htdocs/user/index.php
@@ -175,7 +175,7 @@ $user2=new User($db);
$buttonviewhierarchy='';
-$sql = "SELECT u.rowid, u.lastname, u.firstname, u.admin, u.fk_soc, u.login, u.email, u.accountancy_code, u.gender, u.employee, u.photo,";
+$sql = "SELECT DISTINCT u.rowid, u.lastname, u.firstname, u.admin, u.fk_soc, u.login, u.email, u.accountancy_code, u.gender, u.employee, u.photo,";
$sql.= " u.datelastlogin, u.datepreviouslogin,";
$sql.= " u.ldap_sid, u.statut, u.entity,";
$sql.= " u.tms as date_update, u.datec as date_creation,";
@@ -191,9 +191,19 @@ $sql.= " FROM ".MAIN_DB_PREFIX."user as u";
if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user_extrafields as ef on (u.rowid = ef.fk_object)";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON u.fk_soc = s.rowid";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user as u2 ON u.fk_user = u2.rowid";
-if(! empty($conf->multicompany->enabled) && $conf->entity == 1 && (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE) || (! empty($user->admin) && empty($user->entity))))
+if (! empty($conf->multicompany->enabled))
{
- $sql.= " WHERE u.entity IS NOT NULL";
+ if (! empty($conf->global->MULTICOMPANY_TRANSVERSE_MODE)) {
+ if ($conf->entity == 1 && ! empty($user->admin) && empty($user->entity)) {
+ $sql.= " WHERE u.entity IS NOT NULL";
+ } else {
+ $sql.= ",".MAIN_DB_PREFIX."usergroup_user as ug";
+ $sql.= " WHERE ug.fk_user = u.rowid";
+ $sql.= " AND ug.entity IN (".getEntity('user').")";
+ }
+ } else {
+ $sql.= " WHERE u.entity IN (".getEntity('user').")";
+ }
}
else
{