diff --git a/lib/private/group.php b/lib/private/group.php
index 8dc381292052ce75fb24dfa08c9db9e3d55701ba..bd9e3d37d1f5f60b8d9d2fd5decfe5122f9b005a 100644
--- a/lib/private/group.php
+++ b/lib/private/group.php
@@ -187,12 +187,7 @@ class OC_Group {
 	public static function getUserGroups($uid) {
 		$user = self::$userManager->get($uid);
 		if ($user) {
-			$groups = self::getManager()->getUserGroups($user);
-			$groupIds = array();
-			foreach ($groups as $group) {
-				$groupIds[] = $group->getGID();
-			}
-			return $groupIds;
+			return self::getManager()->getUserGroupIds($user);
 		} else {
 			return array();
 		}
diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php
index dae6443e9d488a61f80a756950e80ad80c273f04..3613c7547bdcb85e37a2b66841415c38d8b65133 100644
--- a/lib/private/group/manager.php
+++ b/lib/private/group/manager.php
@@ -182,6 +182,18 @@ class Manager extends PublicEmitter {
 		$this->cachedUserGroups[$uid] = array_values($groups);
 		return $this->cachedUserGroups[$uid];
 	}
+	/**
+	 * @param \OC\User\User $user
+	 * @return array with group names
+	 */
+	public function getUserGroupIds($user) {
+		$groupIds = array();
+		foreach ($this->backends as $backend) {
+			$groupIds = array_merge($groupIds, $backend->getUserGroups($user->getUID()));
+			
+		}
+		return $groupIds;
+	}
 
 	/**
 	 * get a list of all display names in a group