middleware('auth'); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $data = [ 'seo' => [ 'title' => null, 'desc' => null, 'img' => null, ], 'memes' => Meme::with(['user', 'tips'])->orderByDesc('created_at')->paginate(20), ]; return view('homepage', ['data' => $data]); } public function leaderboard() { $users = User::with('tips')->has('memes')->get(); $users = $users->sortByDesc(function($user) { return $user->tips_total; }); $data = [ 'users' => $users, ]; return view('leaderboard', ['data' => $data]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('meme-create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $validatedData = $request->validate([ 'title' => ['required', 'string', 'max:255'], 'caption' => ['string', 'max:255', 'nullable'], 'image' => ['required', 'image'], ]); $user = \Auth::user(); $used_ids = Meme::pluck('address_id')->toArray(); $address = Address::whereNotIn('id', $used_ids)->first('id'); return Meme::create([ 'user_id' => $user->id, 'address_id' => $address->id, 'title' => $request->input('title'), 'caption' => $request->input('caption'), 'image' => $request->file('image'), ]); } /** * Display the specified resource. * * @param \App\Models\Meme $meme * @return \Illuminate\Http\Response */ public function show($id) { $meme = Meme::where('id', $id)->with(['user', 'tips', 'address'])->firstOrFail(); $share = \Share::page(url()->current(), $meme->title, ['class' => 'fa-lg', 'target' => '_blank']) ->facebook() ->twitter() ->reddit() ->telegram() ->linkedin() ->whatsapp(); $data = [ 'meme' => $meme, 'qr' => (new QRCode)->render($meme->address->address), 'share' => preg_replace("//", "", $share), ]; return view('meme', ['data' => $data]); } /** * Show the form for editing the specified resource. * * @param \App\Models\Meme $meme * @return \Illuminate\Http\Response */ public function edit(Meme $meme) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Meme $meme * @return \Illuminate\Http\Response */ public function update(Request $request, Meme $meme) { // } public function approve($id) { if (\Auth::user()->is_admin === 1) { $meme = Meme::withoutGlobalScope('approved')->find($id); $meme->is_approved = 1; $meme->save(); return redirect()->away(url()->previous()); } } /** * Remove the specified resource from storage. * * @param \App\Models\Meme $meme * @return \Illuminate\Http\Response */ public function destroy($id) { if (\Auth::user()->is_admin === 1) { Meme::withoutGlobalScope('approved')->where('id', $id)->delete(); return redirect()->away(url()->previous()); } } }