getReverseSubstitutes() works with roles

This commit is contained in:
Uwe Steinmann 2017-07-21 14:41:39 +02:00
parent 66044f8b4a
commit d954b4df1d

View File

@ -1877,20 +1877,23 @@ class SeedDMS_Core_User { /* {{{ */
if (!isset($this->_rev_substitutes)) { if (!isset($this->_rev_substitutes)) {
$queryStr = "SELECT `tblUsers`.* FROM `tblUserSubstitutes` ". $queryStr = "SELECT `tblUsers`.* FROM `tblUserSubstitutes` ".
"LEFT JOIN `tblUsers` ON `tblUserSubstitutes`.`user` = `tblUsers`.`id` ". "LEFT JOIN `tblUsers` ON `tblUserSubstitutes`.`user` = `tblUsers`.`id` ".
"LEFT JOIN `tblRoles` ON `tblRoles`.`id`=`tblUsers`.`role` ".
"WHERE `tblUserSubstitutes`.`substitute`='". $this->_id ."'"; "WHERE `tblUserSubstitutes`.`substitute`='". $this->_id ."'";
/* None admins can only be substitutes for regular users, otherwise /* None admins can only be substitutes for regular users, otherwise
* regular users can become admin * regular users can become admin
*/ */
if(!$this->isAdmin()) 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); $resArr = $db->getResultArray($queryStr);
if (is_bool($resArr) && $resArr == false) if (is_bool($resArr) && $resArr == false)
return false; return false;
$this->_rev_substitutes = array(); $this->_rev_substitutes = array();
$classnamerole = $this->_dms->getClassname('role');
$classname = $this->_dms->getClassname('user'); $classname = $this->_dms->getClassname('user');
foreach ($resArr as $row) { 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); $user->setDMS($this->_dms);
array_push($this->_rev_substitutes, $user); array_push($this->_rev_substitutes, $user);
} }