mirror of
https://github.com/Poniverse/Pony.fm.git
synced 2024-11-24 22:18:00 +01:00
#7: Implement CR changes
This commit is contained in:
parent
05c66ca5dd
commit
2c3ef557af
7 changed files with 36 additions and 35 deletions
|
@ -81,7 +81,7 @@ class AlbumsController extends Controller
|
|||
App::abort(404);
|
||||
}
|
||||
|
||||
if (!Album::hasLosslessTracks($album) && in_array($formatName, Track::$LosslessFormats)) {
|
||||
if (!$album->hasLosslessTracksOnly() && in_array($formatName, Track::$LosslessFormats)) {
|
||||
App::abort(404);
|
||||
}
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ class PlaylistsController extends Controller
|
|||
App::abort(404);
|
||||
}
|
||||
|
||||
if (!Playlist::hasLosslessTracks($playlist) && in_array($formatName, Track::$LosslessFormats)) {
|
||||
if (!$this->hasLosslessTracksOnly() && in_array($formatName, Track::$LosslessFormats)) {
|
||||
App::abort(404);
|
||||
}
|
||||
|
||||
|
|
|
@ -134,18 +134,6 @@ class Album extends Model implements Searchable, Commentable, Favouritable
|
|||
return $this->morphMany(Activity::class, 'resource');
|
||||
}
|
||||
|
||||
public static function hasLosslessTracks(Album $album)
|
||||
{
|
||||
$hasLosslessTracks = false;
|
||||
foreach ($album->tracks as $track) {
|
||||
if (!$track->isMasterLossy()) {
|
||||
$hasLosslessTracks = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $hasLosslessTracks;
|
||||
}
|
||||
|
||||
public static function mapPublicAlbumShow(Album $album)
|
||||
{
|
||||
$tracks = [];
|
||||
|
@ -154,7 +142,7 @@ class Album extends Model implements Searchable, Commentable, Favouritable
|
|||
}
|
||||
|
||||
$formats = [];
|
||||
$hasLosslessTracks = Album::hasLosslessTracks($album);
|
||||
$hasLosslessTracks = $album->hasLosslessTracksOnly();
|
||||
foreach (Track::$Formats as $name => $format) {
|
||||
if (!$hasLosslessTracks && in_array($name, Track::$LosslessFormats)) {
|
||||
continue;
|
||||
|
|
|
@ -107,18 +107,6 @@ class Playlist extends Model implements Searchable, Commentable, Favouritable
|
|||
return !$query;
|
||||
}
|
||||
|
||||
public static function hasLosslessTracks(Playlist $playlist)
|
||||
{
|
||||
$hasLosslessTracks = false;
|
||||
foreach ($playlist->tracks as $track) {
|
||||
if (!$track->isMasterLossy()) {
|
||||
$hasLosslessTracks = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $hasLosslessTracks;
|
||||
}
|
||||
|
||||
public static function mapPublicPlaylistShow(Playlist $playlist)
|
||||
{
|
||||
$tracks = [];
|
||||
|
@ -129,7 +117,7 @@ class Playlist extends Model implements Searchable, Commentable, Favouritable
|
|||
}
|
||||
|
||||
$formats = [];
|
||||
$hasLosslessTracks = Playlist::hasLosslessTracks($playlist);
|
||||
$hasLosslessTracks = $playlist->hasLosslessTracksOnly();
|
||||
foreach (Track::$Formats as $name => $format) {
|
||||
if (!$hasLosslessTracks && in_array($name, Track::$LosslessFormats)) {
|
||||
continue;
|
||||
|
|
|
@ -633,14 +633,15 @@ class Track extends Model implements Searchable, Commentable, Favouritable
|
|||
return $this->published_at != null && $this->deleted_at == null;
|
||||
}
|
||||
|
||||
public function isMasterLossy()
|
||||
|
||||
protected function getMasterTrackFile() : TrackFile
|
||||
{
|
||||
return is_null(
|
||||
$this->trackFiles->where('is_master', true)
|
||||
->first(function ($key, $trackFile) {
|
||||
return in_array($trackFile->format, Track::$LosslessFormats);
|
||||
})
|
||||
);
|
||||
return $this->trackFiles->where('is_master', true)->first();
|
||||
}
|
||||
|
||||
public function isMasterLossy() : bool
|
||||
{
|
||||
return $this->getMasterTrackFile()->isLossy();
|
||||
}
|
||||
|
||||
public function getCoverUrl($type = Image::NORMAL)
|
||||
|
|
|
@ -185,4 +185,9 @@ class TrackFile extends Model
|
|||
|
||||
return $this->filesize;
|
||||
}
|
||||
|
||||
public function isLossy() : bool
|
||||
{
|
||||
return !in_array($this->format, Track::$LosslessFormats);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace Poniverse\Ponyfm\Traits;
|
|||
|
||||
use File;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\Relation;
|
||||
use Poniverse\Ponyfm\Jobs\EncodeTrackFile;
|
||||
use Poniverse\Ponyfm\Models\TrackFile;
|
||||
|
@ -123,4 +124,22 @@ trait TrackCollection
|
|||
}
|
||||
])->where('format', $format)->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a boolean based on whether all (@link TrackFile)s
|
||||
* for this (@link TrackCollection)'s tracks have lossless master files.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasLosslessTracksOnly() : bool
|
||||
{
|
||||
$hasLosslessTracksOnly = false;
|
||||
foreach ($this->tracks as $track) {
|
||||
if (!$track->isMasterLossy()) {
|
||||
$hasLosslessTracksOnly = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $hasLosslessTracksOnly;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue