How to store user activity in Laravel into database table

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);
    }
}




Leave a Reply