input('message'); $checkSendRate = Shoutbox::where('user', auth()->user()->id)->where('created_at', '>=', Carbon::now()->subSeconds(1))->first(); if ($checkSendRate) { return 'Wait 1 Seconds Between Posts Please'; } if (auth()->user()->can_chat == 0) { return 'Your Chat Banned'; } $v = validator($request->all(), [ 'message' => 'required|min:1|regex:/^[(a-zA-Z\-)]+$/u' ]); if ($v->fails()) { Toastr::error('There was a error with your input!', 'Error!', ['options']); } if ($request->ajax()) { preg_match_all('/(#\w+)/', $string, $mentions); $mentionIDs = []; foreach ($mentions[0] as $mention) { $findUser = User::where('username', 'LIKE', '%' . str_replace('#', '', $mention) . '%')->first(); if (!empty($findUser->id)) { $mentionIDs[] = $findUser['id']; } } $mentions = implode(',', $mentionIDs); if (! is_null($mentions)) { $insertMessage = Shoutbox::create(['user' => auth()->user()->id, 'message' => $string, 'mentions' => $mentions]); } else { $insertMessage = Shoutbox::create(['user' => auth()->user()->id, 'message' => $string]); } $flag = true; if (auth()->user()->image != null) { $avatar = ''; } else { $avatar = ''; } $flag = true; if (auth()->user()->isOnline()) { $online = ''; } else { $online = ''; } $appurl = config('app.url'); $data = '
  • ' . ($flag ? $avatar : "") . '

      user()->username . '.' . auth()->user()->id . '\'>' . auth()->user()->username . ' ' . ($flag ? $online : "") . '  ' . Carbon::now()->diffForHumans() . '

    ' . e($string) . '

  • '; cache()->forget('shoutbox_messages'); return response()->json(['success' => true, 'data' => $data]); } } public static function getMessages($after = null) { $messages = cache()->remember('shoutbox_messages', 7200, function () { return Shoutbox::latest('id')->take(150)->get(); }); $messages = $messages->reverse(); $next_batch = null; if ($messages->count() !== 0) { $next_batch = $messages->last()->id; } if ($after !== null) { $messages = $messages->filter(function ($value, $key) use ($after) { return $value->id > $after; }); } $data = []; $flag = false; foreach ($messages as $message) { $class = ''; if (!empty($message->mentions)){ if (in_array(auth()->user()->id, explode(',', $message->mentions))) { $class = 'mentioned'; $show = true; } elseif (in_array(auth()->user()->id, explode(',', $message->user))){ $class = 'mentions'; $show = true; } else { $show = false; } } elseif ($message->mentions == '1'){ $show = true; } elseif ($message->mentions == '2'){ $show = true; } else { $show = true; } if ($message->user == auth()->user()->id){ $show = true; } if ($message->user == '1'){ $show = true; } if ($message->user == '2'){ $show = true; } if ($show){ $flag = true; if ($message->poster->image != null) { $avatar = 'poster->username . "'" . ')" class="profile-avatar tiny pull-left" src="/files/img/' . $message->poster->image . '">'; } else { $avatar = 'poster->username . "'" . ')" class="profile-avatar tiny pull-left" src="img/profile.png">'; } $flag = true; $delete = ''; if (auth()->user()->group->is_modo || $message->poster->id == auth()->user()->id) { $appurl = config('app.url'); $delete = 'id . '\'>'; } $flag = true; if ($message->poster->isOnline()) { $online = ''; } else { $online = ''; } $flag = true; if (auth()->user()->censor == 1) { $censorMessage = \LaravelEmojiOne::toImage(LanguageCensor::censor(Shoutbox::getMessageHtml($message->message))); } else { $censorMessage = \LaravelEmojiOne::toImage(Shoutbox::getMessageHtml($message->message)); } $appurl = config('app.url'); $data[] = '
  • ' . ($flag ? $avatar : "") . '

     poster->username . "'" . ')">' . e($message->poster->username) . ' - poster->username) . '.' . e($message->poster->id) . '\'>Profile ' . ($flag ? $online : "") . '  ' . ($message->created_at->diffForHumans()) . '

    ' . ($flag ? $censorMessage : "") . ' ' . ($flag ? $delete : "") . '

  • '; } } return ['data' => $data, 'next_batch' => $next_batch]; } /** * Fetch Shout * * */ public function pluck(Request $request, $after = null) { if ($request->ajax()) { $messagesNext = self::getMessages($after); $data = $messagesNext['data']; $next_batch = $messagesNext['next_batch']; return response()->json(['success' => true, 'data' => $data, 'next_batch' => $next_batch]); } } /** * Delete Shout * * @param $id */ public function deleteShout($id) { $shout = Shoutbox::find($id); if (auth()->user()->group->is_modo || auth()->user()->id == $shout->poster->id) { Shoutbox::where('id', $id)->delete(); cache()->forget('shoutbox_messages'); return redirect()->route('home')->with(Toastr::success('Shout Has Been Deleted.', 'Yay!', ['options'])); } else { return redirect()->route('home')->with(Toastr::error('This is not your shout to delete.', 'Whoops!', ['options'])); } } }