From d73304819347cd22ce1b15dab8db1dab098df132 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Tue, 6 Sep 2022 10:45:37 +0000
Subject: [PATCH] fix role detection for MvvPerm::getRoles(), fixes #1546

Closes #1546

Merge request studip/studip!966
---
 lib/classes/MvvPerm.php | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/lib/classes/MvvPerm.php b/lib/classes/MvvPerm.php
index 918375da771..702dfd06827 100644
--- a/lib/classes/MvvPerm.php
+++ b/lib/classes/MvvPerm.php
@@ -534,20 +534,20 @@ class MvvPerm {
     /**
      *
      *
-     * @param type $user_id
+     * @param string $user_id
      * @return
      */
     public static function getRoles($user_id)
     {
-        if (!self::$roles[$user_id]) {
-            $assigned = RolePersistence::getAssignedRoles($user_id);
-            foreach (RolePersistence::getAssignedRoles($user_id) as $role_id => $role) {
-                if (substr_compare($role->rolename, 'MVV', 1, 3, true)) {
-                    self::$roles[$user_id][] = $role;
+        if (!isset(self::$roles[$user_id])) {
+            self::$roles[$user_id] = array_filter(
+                RolePersistence::getAssignedRoles($user_id),
+                function ($role) {
+                    return stripos($role->rolename, 'mvv') === 0;
                 }
-            }
+            );
         }
-        return (self::$roles[$user_id] ?: []);
+        return self::$roles[$user_id];
     }
 
     /**
-- 
GitLab