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 : "") . '
' . 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 : "") . '
' . ($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']));
}
}
}