�PNG  IHDR��;���IDATx��ܻn�0���K�� �)(�pA��� ���7�LeG{�� �§㻢|��ذaÆ 6lذaÆ 6lذaÆ 6lom��$^�y���ذag�5bÆ 6lذaÆ 6lذa{���� 6lذaÆ �`����}H�Fkm�,�m����Ӫ���ô�ô!� �x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6� �h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t ��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ ��Rn��~G���R���C����� �wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L�� lذaÆ 6l�^k��̱aÆ 6lذaÆ 6lذa;���� �_��ذaÆ 6lذaÆ 6lذaÆ ���R���IEND�B`

# 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 ```bash 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. ```php # 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 ```bash 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 ```php $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 ```php 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 ```php // 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 ```php $model->visitLogs()->count(); ``` unique users can be counted by their IP and by model. ```php // 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 ```php $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. ```php 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.