diff --git a/app/controllers/Api/Web/AlbumsController.php b/app/controllers/Api/Web/AlbumsController.php index 6545323f..ff8de5a2 100644 --- a/app/controllers/Api/Web/AlbumsController.php +++ b/app/controllers/Api/Web/AlbumsController.php @@ -47,8 +47,13 @@ $album->view_count++; } + $returned_album = Album::mapPublicAlbumShow($album); + if($returned_album['is_downloadable'] == 0) { + unset($returned_album['formats']); + } + return Response::json([ - 'album' => Album::mapPublicAlbumShow($album) + 'album' => $returned_album ], 200); } diff --git a/app/controllers/Api/Web/TracksController.php b/app/controllers/Api/Web/TracksController.php index 000cbf84..85752d6d 100644 --- a/app/controllers/Api/Web/TracksController.php +++ b/app/controllers/Api/Web/TracksController.php @@ -40,7 +40,12 @@ $track->view_count++; } - return Response::json(['track' => Track::mapPublicTrackShow($track)], 200); + $returned_track = Track::mapPublicTrackShow($track); + if ($returned_track['is_downloadable'] != 1) { + unset($returned_track['formats']); + } + + return Response::json(['track' => $returned_track], 200); } public function getIndex() { diff --git a/app/models/Entities/Album.php b/app/models/Entities/Album.php index 65ddbbd9..399b0c80 100644 --- a/app/models/Entities/Album.php +++ b/app/models/Entities/Album.php @@ -76,11 +76,20 @@ $comments[] = Comment::mapPublic($comment); } + $is_downloadable = 0; + foreach ($album->tracks as $track) { + if ($track->is_downloadable == 1) { + $is_downloadable = 1; + break; + } + } + $data = self::mapPublicAlbumSummary($album); $data['tracks'] = $tracks; $data['comments'] = $comments; $data['formats'] = $formats; $data['description'] = $album->description; + $data['is_downloadable'] = $is_downloadable; $data['share'] = [ 'url' => URL::to('/a' . $album->id), 'tumblrUrl' => 'http://www.tumblr.com/share/link?url=' . urlencode($album->url) . '&name=' . urlencode($album->title) . '&description=' . urlencode($album->description), @@ -160,7 +169,10 @@ return Cache::remember($this->getCacheKey('filesize-' . $format), 1440, function() use ($tracks, $format) { $size = 0; foreach ($tracks as $track) { - $size += $track->getFilesize($format); + // Ensure that only downloadable tracks are added onto the file size + if ($track->is_downloadable == 1) { + $size += $track->getFilesize($format); + } } return $size; diff --git a/public/templates/albums/show.html b/public/templates/albums/show.html index e500557b..17e0b72b 100644 --- a/public/templates/albums/show.html +++ b/public/templates/albums/show.html @@ -1,10 +1,10 @@