|
|
|
@ -495,6 +495,9 @@ class DefaultShareProvider implements IShareProvider { |
|
|
|
} else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) { |
|
|
|
$allGroups = $this->groupManager->getUserGroups($user); |
|
|
|
|
|
|
|
/** @var Share[] $shares2 */ |
|
|
|
$shares2 = []; |
|
|
|
|
|
|
|
$start = 0; |
|
|
|
while(true) { |
|
|
|
$groups = array_slice($allGroups, $start, 100); |
|
|
|
@ -528,7 +531,7 @@ class DefaultShareProvider implements IShareProvider { |
|
|
|
$offset--; |
|
|
|
continue; |
|
|
|
} |
|
|
|
$shares[] = $this->createShare($data); |
|
|
|
$shares2[] = $this->createShare($data); |
|
|
|
} |
|
|
|
$cursor->closeCursor(); |
|
|
|
} |
|
|
|
@ -537,7 +540,9 @@ class DefaultShareProvider implements IShareProvider { |
|
|
|
* Resolve all group shares to user specific shares |
|
|
|
* TODO: Optmize this! |
|
|
|
*/ |
|
|
|
$shares = array_map([$this, 'resolveGroupShare'], $shares); |
|
|
|
foreach($shares2 as $share) { |
|
|
|
$shares[] = $this->resolveGroupShare($share, $user); |
|
|
|
} |
|
|
|
} else { |
|
|
|
throw new BackendError('Invalid backend'); |
|
|
|
} |
|
|
|
@ -674,15 +679,18 @@ class DefaultShareProvider implements IShareProvider { |
|
|
|
* Thus if the user moved their group share make sure this is properly reflected here. |
|
|
|
* |
|
|
|
* @param Share $share |
|
|
|
* @param IUser $user |
|
|
|
* @return Share Returns the updated share if one was found else return the original share. |
|
|
|
*/ |
|
|
|
private function resolveGroupShare(Share $share) { |
|
|
|
private function resolveGroupShare(Share $share, IUser $user) { |
|
|
|
$qb = $this->dbConn->getQueryBuilder(); |
|
|
|
|
|
|
|
$stmt = $qb->select('*') |
|
|
|
->from('share') |
|
|
|
->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId()))) |
|
|
|
->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP))) |
|
|
|
->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($user->getUID()))) |
|
|
|
->setMaxResults(1) |
|
|
|
->execute(); |
|
|
|
|
|
|
|
$data = $stmt->fetch(); |
|
|
|
|