user(); $artworks = Artwork::whereNotNull('approved_by') ->with('artist') ->orderBy('episode_id', 'desc') ->orderBy('created_at', 'desc') ->paginate($perPage = 52, $columns = ['*'], $pageName = 'artworks'); $podcasts = Cache::remember('publishedPodcasts', 30, function() { return Podcast::where('published', true)->get(); }); return view('explore.artworks', [ 'user' => $user, 'pageTitle' => 'Explore', 'artworks' => $artworks, 'podcasts' => $podcasts, ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $user = auth()->user(); $podcasts = Cache::remember('publishedPodcasts', 30, function() { return Podcast::where('published', true)->get(); }); return view('artworks.submit', [ 'user' => $user, 'pageTitle' => 'Submit New Artwork', 'podcasts' => $podcasts, ]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request): RedirectResponse { $validator = Validator::make($request->all(), [ 'title' => ['required', 'max:255',], 'podcast' => ['required', 'exists:podcasts,id',], 'description' => ['nullable',], 'file' => ['required', 'image', Rule::dimensions()->ratio(1)->minWidth(512),], ]); if ($validator->fails()) { return back() ->withErrors($validator) ->withInput(); } Log::channel('artwork_import')->info('making new artwork model.'); $podcast = Podcast::where('id', $request->podcast)->with(['episodes' => function($query) { $query->orderBy('episode_number', 'desc')->limit(1); }])->first(); $episode = $podcast->episodes->first(); $artist = auth()->user()->artists()->first(); $rawFile = $request->file('file'); $filename = now()->format('Y') . '/' . now()->format('m') . '/' . Str::slug($artist->name) . '-' . Str::slug($request->title) . '_' . Str::random(8) . '.jpg'; $artwork = Artwork::factory()->state([ 'title' => $request->title, 'artist_id' => $artist->id, 'description' => $request->description, 'overlay_id' => null, 'podcast_id' => $podcast->id, 'episode_id' => $episode->id, 'filename' => $filename, ])->create(); $img = Image::make($rawFile)->resize(3000, null, function($constraint){ $constraint->aspectRatio(); }) ->encode('jpg', 100) ->save(Storage::disk('static')->path('/artworks') . '/' . $artwork->filename); $thumbImg = Image::make($request->file('file'))->resize(512, null, function($constraint){ $constraint->aspectRatio(); }) ->encode('jpg', 100) ->save(Storage::disk('static')->path('/thumbnails') . '/' . $artwork->filename); ImageOptimizer::optimize(Storage::disk('static')->path('/artworks/' . $artwork->filename)); ImageOptimizer::optimize(Storage::disk('static')->path('/thumbnails/' . $artwork->filename)); return redirect('/artworks/' . $artwork->id); } /** * Display the specified resource. * * @param \Illuminate\Http\Request $request * @param the id of the \App\Models\Artwork $id * @return \Illuminate\Http\Response */ public function show(Request $request, $id) { $user = auth()->user(); $artwork = Artwork::where('id', $id) ->with('podcast') ->with('episode') ->with('artist') ->first(); return view('artworks.artwork', [ 'artwork' => $artwork, 'user' => $user, ]); } /** * Show the form for editing the specified resource. * * @param \App\Models\Artwork $artwork * @return \Illuminate\Http\Response */ public function edit(Artwork $artwork) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Artwork $artwork * @return \Illuminate\Http\Response */ public function update(Request $request, Artwork $artwork) { // } /** * Remove the specified resource from storage. * * @param \App\Models\Artwork $artwork * @return \Illuminate\Http\Response */ public function destroy(Artwork $artwork) { // } public function approve(Artwork $artwork) { $user = auth()->user(); $awatingApproval = Artwork::whereNull('approved_by')->with('podcast')->orderBy('created_at', 'asc')->get(); } public function legacyArtLink(Request $request, $any = null) { phpinfo(); dd($request->path()); //$artwork = Artwork::where('legacy_filename', '/assets/artwork/') } }