Merge pull request #1597 from simonspa/p/remove-collab-photos

Remove photos from collaborators once they are removed
This commit is contained in:
Louis 2023-01-24 07:34:40 +01:00 committed by GitHub
commit 3be4878535
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 6 deletions

View File

@ -377,12 +377,18 @@ class AlbumMapper {
}
foreach ($collaboratorsToRemove as $collaborator) {
$query = $this->connection->getQueryBuilder();
$query->delete('photos_albums_collabs')
->where($query->expr()->eq('album_id', $query->createNamedParameter($albumId, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('collaborator_id', $query->createNamedParameter($collaborator['id'])))
->andWhere($query->expr()->eq('collaborator_type', $query->createNamedParameter($collaborator['type'], IQueryBuilder::PARAM_INT)))
->executeStatement();
switch ($collaborator['type']) {
case self::TYPE_USER:
$this->deleteUserFromAlbumCollaboratorsList($collaborator['id'], $albumId);
break;
default:
$query = $this->connection->getQueryBuilder();
$query->delete('photos_albums_collabs')
->where($query->expr()->eq('album_id', $query->createNamedParameter($albumId, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('collaborator_id', $query->createNamedParameter($collaborator['id'])))
->andWhere($query->expr()->eq('collaborator_type', $query->createNamedParameter($collaborator['type'], IQueryBuilder::PARAM_INT)))
->executeStatement();
}
}
$this->connection->commit();
@ -450,6 +456,20 @@ class AlbumMapper {
->andWhere($query->expr()->eq('collaborator_id', $query->createNamedParameter($userId)))
->andWhere($query->expr()->eq('collaborator_type', $query->createNamedParameter(self::TYPE_USER, IQueryBuilder::PARAM_INT)))
->executeStatement();
// Remove all photos by this user from the album:
$query = $this->connection->getQueryBuilder();
$query->delete('photos_albums_files')
->where($query->expr()->eq('album_id', $query->createNamedParameter($albumId, IQueryBuilder::PARAM_INT)))
->andWhere($query->expr()->eq('owner', $query->createNamedParameter($userId)))
->executeStatement();
// Update the last added photo:
$query = $this->connection->getQueryBuilder();
$query->update("photos_albums")
->set('last_added_photo', $query->createNamedParameter($this->getLastAdded($albumId), IQueryBuilder::PARAM_INT))
->where($query->expr()->eq('album_id', $query->createNamedParameter($albumId, IQueryBuilder::PARAM_INT)))
->executeStatement();
}
/**