diff --git a/PhpRbac/src/PhpRbac/core/lib/rbac.php b/PhpRbac/src/PhpRbac/core/lib/rbac.php index 9c2dc3e..e5c5530 100644 --- a/PhpRbac/src/PhpRbac/core/lib/rbac.php +++ b/PhpRbac/src/PhpRbac/core/lib/rbac.php @@ -775,6 +775,27 @@ function roles($Permission, $OnlyIDs = true) WHERE PermissionID=? ORDER BY TP.ID", $Permission ); } } + /** + * Returns all users with a permission + * + * @param integer $Permission + * ID + * @return Array 1D or null + */ + function users($Permission) + { + if (!is_numeric($Permission)) $Permission = $this->returnId($Permission); + $Res = Jf::sql ("SELECT DISTINCT(UserID) FROM {$this->tablePrefix()}permissions INNER JOIN {$this->tablePrefix()}rolepermissions ON {$this->tablePrefix()}permissions.ID = {$this->tablePrefix()}rolepermissions.PermissionID INNER JOIN {$this->tablePrefix()}roles ON {$this->tablePrefix()}rolepermissions.RoleID = {$this->tablePrefix()}roles.`ID` INNER JOIN {$this->tablePrefix()}userroles ON {$this->tablePrefix()}roles.`ID` = {$this->tablePrefix()}userroles.RoleID WHERE {$this->tablePrefix()}permissions.`ID` = ?", $Permission); + if (is_array ( $Res )) + { + $out = array (); + foreach ( $Res as $R ) + $out [] = $R ['UserID']; + return $out; + } + else + return null; + } } /** @} */ // End group phprbac_permission_manager */