From d406b289111f57478e19db6dbcc2ea1392e117da Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 6 Mar 2018 19:08:39 +0100 Subject: [PATCH] Fix: problem to see users with transverse mode --- htdocs/user/class/user.class.php | 16 +++++++++++++--- htdocs/user/home.php | 18 ++++++++++++++---- htdocs/user/index.php | 16 +++++++++++++--- 3 files changed, 40 insertions(+), 10 deletions(-) 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 {