diff --git a/lib/Album/AlbumMapper.php b/lib/Album/AlbumMapper.php index 9be017d0..575c4da0 100644 --- a/lib/Album/AlbumMapper.php +++ b/lib/Album/AlbumMapper.php @@ -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(); } /**