. */ namespace App\Providers; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Foundation\Application; use Illuminate\Support\ServiceProvider; use PfmValidator; use Poniverse; use Validator; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { Validator::resolver(function ($translator, $data, $rules, $messages) { return new PfmValidator($translator, $data, $rules, $messages); }); } /** * Register any application services. * * @return void */ public function register() { $this->app->bind(Poniverse::class, function (Application $app) { return new Poniverse($app['config']->get('poniverse.client_id'), $app['config']->get('poniverse.secret')); }); $this->app->bind(App\Library\Search::class, function (Application $app) { return new App\Library\Search( \Elasticsearch::connection(), $app['config']->get('ponyfm.elasticsearch_index') ); }); // NOTE: Use integer keys exclusively for Pony.fm's morphMap to avoid // any weirdness with merging array indices. $merge = false is // set below so that no morphMap array merging happens! Relation::morphMap([ App\Models\Activity::TARGET_TRACK => App\Models\Track::class, App\Models\Activity::TARGET_ALBUM => App\Models\Album::class, App\Models\Activity::TARGET_PLAYLIST => App\Models\Playlist::class, App\Models\Activity::TARGET_USER => App\Models\User::class, App\Models\Activity::TARGET_COMMENT => App\Models\Comment::class, ], false); } }