2015-08-31 15:30:02 +01:00
< ? php
2015-10-24 22:17:45 -07: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-23 18:22:14 -07:00
namespace Poniverse\Ponyfm\Http\Controllers\Api\Web ;
2015-08-31 15:30:02 +01:00
2015-12-31 16:12:30 -08:00
use Poniverse\Ponyfm\Models\Genre ;
2015-10-23 18:22:14 -07:00
use Poniverse\Ponyfm\Http\Controllers\ApiControllerBase ;
2015-12-31 16:12:30 -08:00
use Poniverse\Ponyfm\Models\License ;
use Poniverse\Ponyfm\Models\ShowSong ;
use Poniverse\Ponyfm\Models\TrackType ;
2016-06-12 04:49:24 -07:00
use DB ;
2015-08-31 15:30:02 +01:00
2015-09-06 18:21:11 +01:00
class TaxonomiesController extends ApiControllerBase
2015-08-31 15:30:02 +01:00
{
public function getAll ()
{
return \Response :: json ([
'licenses' => License :: all () -> toArray (),
2016-02-15 07:51:26 -08:00
'genres' => Genre :: with ( 'trackCountRelation' )
-> orderBy ( 'name' )
-> get ()
-> toArray (),
2015-08-31 15:30:02 +01:00
'track_types' => TrackType :: select ( 'track_types.*' ,
2015-11-04 18:47:11 -08: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 15:30:02 +01:00
'show_songs' => ShowSong :: select ( 'title' , 'id' , 'slug' ,
2016-06-06 00:12:04 +01: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 15:30:02 +01:00
], 200 );
}
2015-10-24 22:17:45 -07:00
}