All Projects → shetabit → Visitor

shetabit / Visitor

Licence: mit
a laravel package to work with visitors and retrieve their informations

Labels

Projects that are alternatives of or similar to Visitor

Tastyigniter
🔥 Powerful, yet easy to use, open-source online ordering, table reservation and management system for restaurants
Stars: ✭ 2,137 (+1219.14%)
Mutual labels:  laravel
Laravel Enum
Laravel support for spatie/enum
Stars: ✭ 158 (-2.47%)
Mutual labels:  laravel
Laravel Early Access
This package makes it easy to add early access mode to your existing application.
Stars: ✭ 160 (-1.23%)
Mutual labels:  laravel
Cachet
📛 An open source status page system for everyone.
Stars: ✭ 12,478 (+7602.47%)
Mutual labels:  laravel
Crud
Build custom admin panels. Fast!
Stars: ✭ 2,144 (+1223.46%)
Mutual labels:  laravel
Laravel Scout Tntsearch
包含中文分词的 Laravel Scout TNTSearch 驱动,支持 scws, phpanalysis 和 jieba 分词。
Stars: ✭ 158 (-2.47%)
Mutual labels:  laravel
Searchable
A php trait to search laravel models
Stars: ✭ 1,923 (+1087.04%)
Mutual labels:  laravel
Envoy Deployscript
Laravel Envoy Deployment Script
Stars: ✭ 160 (-1.23%)
Mutual labels:  laravel
Pingcrm React
⚛️ Ping CRM React - A demo app to illustrate how Inertia.js works with Laravel and React (hosted on a heroku free dyno).
Stars: ✭ 158 (-2.47%)
Mutual labels:  laravel
Dashboard.spatie.be
The source code of dashboard.spatie.be
Stars: ✭ 1,916 (+1082.72%)
Mutual labels:  laravel
Dsshop
vue2.0+Laravel7商城电商平台,完全前后端分离,免费开源可商用,H5商城电商平台,微信小程序商城电商平台;支持H5、微信小程序,支付宝小程序、百度小程序、字节跳动小程序、安卓、IOS等等
Stars: ✭ 156 (-3.7%)
Mutual labels:  laravel
Laravel
Docker image to run Laravel 5.x projects
Stars: ✭ 158 (-2.47%)
Mutual labels:  laravel
Bdgt
Big finance tools in a small package
Stars: ✭ 159 (-1.85%)
Mutual labels:  laravel
Image
PHP Image Manipulation
Stars: ✭ 12,298 (+7491.36%)
Mutual labels:  laravel
Laravel Nova Localizations
🌎 Localization files for Laravel Nova
Stars: ✭ 161 (-0.62%)
Mutual labels:  laravel
Captcha
Captcha for Laravel 5/6/7/8
Stars: ✭ 1,985 (+1125.31%)
Mutual labels:  laravel
Region
laravel 省市区联动数据生成
Stars: ✭ 159 (-1.85%)
Mutual labels:  laravel
Lock Laravel
This package is a Laravel 5 driver for Lock
Stars: ✭ 161 (-0.62%)
Mutual labels:  laravel
Laravel Fakeid
Automatic model ID obfuscation in routes for Laravel
Stars: ✭ 161 (-0.62%)
Mutual labels:  laravel
Laravel 8 Stisla Jetstream
Laravel 8 + Jetstream + Livewire + Stisla
Stars: ✭ 159 (-1.85%)
Mutual labels:  laravel

Laravel Visitor

This is a laravel package to extract and access visitors' information such as browser, ip, device and etc.

In this package, you can recognize online users and determine if a user is online or not

Install

Via composer

composer require shetabit/visitor

Configure

If you are using Laravel 5.5 or higher then you don't need to add the provider and alias.

# In your providers array.
'providers' => [
    ...
    Shetabit\Visitor\Provider\VisitorServiceProvider::class,
],

# In your aliases array.
'aliases' => [
    ...
    'Visitor' => Shetabit\Visitor\Facade\Visitor::class,
],

Then, run the below commands to publish migrations and create tables

php artisan vendor:publish

php artisan migrate

How to use

You can access to visitor's information using $request->visitor() in your controllers , and you can access to the visitor's information using visitor() helper function any where.

We have the below methods to retrieve a visitor's information:

  • device : device's name
  • platform : platform's name
  • browser : browser's name
  • languages : langauge's name
  • ip : client's ip
  • request : the whole request inputs
  • useragent : the whole useragent
  • isOnline : determines if current (or given) user is online
$request->visitor()->browser(); // firefox
$request->visitor()->visit($post); // create log for post
$request->visitor()->setVisitor($user)->visit($post); // create a log which says $user has visited $post

Store Logs

You can create logs using the visit method like the below

visitor()->visit(); // create a visit log

use Shetabit\Visitor\Traits\Visitable trait in your models, then you can save visit's log for your models like the below

// or you can save log like the below
visitor()->visit($model);
// or like the below
$model->createVisitLog();

// you can say which user has visited the given $model
$model->createVisitLog($user);
// or like the below
visitor()->setVisitor($user)->visit($model);

Model views can be loaded using visits relation.

You can count model visits like the below

$model->visitLogs()->count();

unique users can be counted by their IP and by model.

// by ip
$model->visitLogs()->distinct('ip')->count('ip');

// by user's model
$model->visitLogs()->visitor()->count();

use Shetabit\Visitor\Traits\Visitor in your User class, then you can run below codes

$user->visit(); // create a visit log
$user->visit($model); // create a log which says, $user has visited $model

Retrieve and Determine Online users

use Shetabit\Visitor\Traits\Visitor in your User class at first.

Then you can retrieve online users which are instance of User class and determine if a user is online.

visitor()->onlineVisitors(User::class); // returns collection of online users
User::online()->get(); // another way

visitor()->isOnline($user); // determines if the given user is online
$user->isOnline(); // another way

Automatic logging

Your application can store visitor's log automatically using LogVisits middleware.

Add the Shetabit\Visitor\Middlewares\LogVisits middleware if you want to save logs automatically.

The middleware will store logs for models which has binded in router (router model binding) and has used Shetabit\Visitor\Traits\Visitable trait.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].