How to store user activity in Laravel into database table, below code is fixed with UTF8 error
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use App\Models\CalActivity;
use Session;
use Auth;
use Cache;
use App\Models\User;
class UserActivity
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
$success = [];
$pattern = array();
$pattern[0] = '/https:\/\//';
$pattern[1] = '/shubhcalendar.com\//';
$pattern[2] = '/http:\/\//';
$pattern[3] = '/www.shubhcalendar.com\//';
$pattern[4] = '/www.\//';
$id = 0;
$ip = $request->ip();
$page = preg_replace($pattern, '', htmlentities($request->url()));//$request->url();//$request->fullUrl();//$request;//$request->all();
$encoding = mb_detect_encoding($page, ['UTF-8', 'Windows-1251', 'ISO-8859-1', 'ASCII'], true);
if ($encoding === false) {
//echo "Unknown or invalid encoding";
$page = "Unknown or invalid encoding";
} else {
//echo "Detected encoding: " . $encoding;
}
if (strlen($page) > 200) {
$page = substr($page, 0, 200);
}
$expiresAt = now()->addMinutes(2); /* keep online for 2 min */
$success['user_id'] = Auth::guard('api')->check() ? Auth::guard('api')->user()->id : 0;
//if (Auth::check()) {
$category = $request->method();
if (Auth::guard('api')->check() ) {
$success['user_id'] = Auth::guard('api')->check() ? Auth::guard('api')->user()->id : 0;
Cache::put('user-is-online-' . Auth::guard('api')->user()->id, true, $expiresAt);
$id = Auth::guard('api')->user()->id;
/* last seen */
User::where('id', Auth::guard('api')->user()->id)->update(['last_seen' => now(),'page'=>htmlentities($page), 'ip'=>$ip]);
$category = 'api';
}
if (Auth::guard('web')->check()) {
$success['user_id'] = Auth::guard('web')->check() ? Auth::guard('web')->user()->id : 0;
Cache::put('user-is-online-' . Auth::guard('web')->user()->id, true, $expiresAt);
$id = Auth::guard('web')->user()->id;
/* last seen */
User::where('id', Auth::guard('web')->user()->id)->update(['last_seen' => now(),'page'=>htmlentities($page), 'ip'=>$ip]);
$category = 'web';
}
$success['session_id'] = Session::getId();
$success['page'] = $page;
$success['category'] = $category ;
$success['ip'] = $ip;
$success['time_value'] = time();
$success['agent'] = substr($request->header('user-agent'),0,255);
if(1){//$id == '85618'
CalActivity::create($success);
}
return $next($request);
}
}