2015-08-31 16:30:02 +02:00
< ? php
2015-10-25 06:17:45 +01:00
/**
* Pony . fm - A community for pony fan music .
* Copyright ( C ) 2015 Peter Deltchev
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
2015-10-24 03:22:14 +02:00
namespace Poniverse\Ponyfm\Http\Controllers\Api\Web ;
2015-08-31 16:30:02 +02:00
2016-01-01 01:12:30 +01:00
use Poniverse\Ponyfm\Models\Genre ;
2015-10-24 03:22:14 +02:00
use Poniverse\Ponyfm\Http\Controllers\ApiControllerBase ;
2016-01-01 01:12:30 +01:00
use Poniverse\Ponyfm\Models\License ;
use Poniverse\Ponyfm\Models\ShowSong ;
use Poniverse\Ponyfm\Models\TrackType ;
2016-06-12 13:49:24 +02:00
use DB ;
2015-08-31 16:30:02 +02:00
2015-09-06 19:21:11 +02:00
class TaxonomiesController extends ApiControllerBase
2015-08-31 16:30:02 +02:00
{
public function getAll ()
{
return \Response :: json ([
'licenses' => License :: all () -> toArray (),
2016-02-15 16:51:26 +01:00
'genres' => Genre :: with ( 'trackCountRelation' )
-> orderBy ( 'name' )
-> get ()
-> toArray (),
2015-08-31 16:30:02 +02:00
'track_types' => TrackType :: select ( 'track_types.*' ,
2015-11-05 03:47:11 +01:00
DB :: raw ( '(SELECT COUNT(id) FROM tracks WHERE tracks.track_type_id = track_types.id AND tracks.published_at IS NOT NULL) AS track_count' ))
-> where ( 'id' , '!=' , TrackType :: UNCLASSIFIED_TRACK )
-> get () -> toArray (),
2015-08-31 16:30:02 +02:00
'show_songs' => ShowSong :: select ( 'title' , 'id' , 'slug' ,
2016-06-06 01:12:04 +02:00
DB :: raw ( '(SELECT COUNT(tracks.id) FROM show_song_track INNER JOIN tracks ON tracks.id = show_song_track.track_id WHERE show_song_track.show_song_id = show_songs.id AND tracks.published_at IS NOT NULL) AS track_count' )) -> orderBy ( 'title' ) -> get () -> toArray ()
2015-08-31 16:30:02 +02:00
], 200 );
}
2015-10-25 06:17:45 +01:00
}