diff --git a/SeedDMS_Core/Core/inc.ClassUser.php b/SeedDMS_Core/Core/inc.ClassUser.php index 743a3d4cd..9642d40d0 100644 --- a/SeedDMS_Core/Core/inc.ClassUser.php +++ b/SeedDMS_Core/Core/inc.ClassUser.php @@ -1877,20 +1877,23 @@ class SeedDMS_Core_User { /* {{{ */ if (!isset($this->_rev_substitutes)) { $queryStr = "SELECT `tblUsers`.* FROM `tblUserSubstitutes` ". "LEFT JOIN `tblUsers` ON `tblUserSubstitutes`.`user` = `tblUsers`.`id` ". + "LEFT JOIN `tblRoles` ON `tblRoles`.`id`=`tblUsers`.`role` ". "WHERE `tblUserSubstitutes`.`substitute`='". $this->_id ."'"; /* None admins can only be substitutes for regular users, otherwise * regular users can become admin */ if(!$this->isAdmin()) - $queryStr .= " AND `tblUsers`.`role` = ".SeedDMS_Core_User::role_user; + $queryStr .= " AND `tblRoles`.`role` = ".SeedDMS_Core_User::role_user; $resArr = $db->getResultArray($queryStr); if (is_bool($resArr) && $resArr == false) return false; $this->_rev_substitutes = array(); + $classnamerole = $this->_dms->getClassname('role'); $classname = $this->_dms->getClassname('user'); foreach ($resArr as $row) { - $user = new $classname($row["id"], $row["login"], $row["pwd"], $row["fullName"], $row["email"], $row["language"], $row["theme"], $row["comment"], $row["role"], $row["hidden"], $row["disabled"], $row["pwdExpiration"], $row["loginfailures"], $row["quota"], $row["homefolder"]); + $role = $classnamerole::getInstance($row['role'], $this->_dms); + $user = new $classname($row["id"], $row["login"], $row["pwd"], $row["fullName"], $row["email"], $row["language"], $row["theme"], $row["comment"], $role, $row["hidden"], $row["disabled"], $row["pwdExpiration"], $row["loginfailures"], $row["quota"], $row["homefolder"]); $user->setDMS($this->_dms); array_push($this->_rev_substitutes, $user); }