Skip to content

Commit

Permalink
Добавлены новые трэйты
Browse files Browse the repository at this point in the history
  • Loading branch information
Sashagm committed Jun 25, 2023
1 parent 727ec5a commit c8b5601
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 76 deletions.
50 changes: 5 additions & 45 deletions src/Http/Middleware/UniqueViewsCounter.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,57 +10,17 @@
use Sashagm\Analytics\Models\Visitor;
use Illuminate\Support\Facades\Cookie;
use Sashagm\Analytics\Models\Statistic;
use Sashagm\Analytics\Traits\UniqueViewsCounterTrait;

class UniqueViewsCounter
{
public function handle($request, Closure $next)
{
$isEnabled = config('analytics.enabled', true);
$cookieLifetime = config('analytics.cookie_lifetime', 60 * 24 * 30); // 30 дней
$savePeriod = config('analytics.save_period', 60 * 24 * 7); // 7 дней
$ip = $_SERVER['REMOTE_ADDR'];

// ...

if ($isEnabled) {
$routeName = $request->route()->getName();

if ($routeName && strpos($routeName, 'admin.') !== 0) {
$views = Cookie::get('views') ? json_decode(Cookie::get('views'), true) : [];

if (!is_null($views) && !in_array($routeName, $views)) {
$views[] = $routeName;
Cookie::queue('views', json_encode($views), $cookieLifetime);

Visitor::create([
'category' => 'route',
'value' => $routeName,
'route' => Route::current()->uri(),
'ip_address' => $ip,
]);
use UniqueViewsCounterTrait;

if (config('analytics.logger')) {
Log::info("Route {$routeName} visited by {$ip}!");
}
}
}

// сохраняем статистику раз в неделю
if (time() % ($savePeriod * 60) == 0) {
Statistic::create([
'category' => 'route',
'data' => json_encode($views),
]);

if (config('analytics.logger')) {
Log::info("Created logs to models Statistic!");
}
}
}


// ...
public function handle($request, Closure $next)
{

$this->start($request);
return $next($request);
}
}
31 changes: 6 additions & 25 deletions src/Http/Middleware/UniqueVisitorsCounter.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,19 @@
use Closure;
use Sashagm\Analytics\Models\Visitor;
use Illuminate\Support\Facades\Cookie;
use Sashagm\Analytics\Traits\UniqueVisitorsCounterTrait;

class UniqueVisitorsCounter
{

use UniqueVisitorsCounterTrait;


public function handle($request, Closure $next)
{


$ip = $_SERVER['REMOTE_ADDR'];
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
$isBot = preg_match('/bot|crawl|slurp|spider/i', $ua);

if (!$isBot) {
// обработка для обычных пользователей
$user = "user";
} else {
// обработка для поисковых роботов
$user = "bot";
}


$visitorId = Cookie::get('visitor_id');

if (!$visitorId) {
$visitorId = uniqid();
Cookie::queue('visitor_id', $visitorId, 60 * 24 * 30);

Visitor::create([
'category' => $user,
'value' => $visitorId,
'ip_address' => $ip,
]);
}
$this->starting($request);

return $next($request);
}
Expand Down
7 changes: 3 additions & 4 deletions src/Providers/AnalyticsServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@
use Sashagm\Analytics\Console\Commands\InstallCommand;
use Sashagm\Analytics\Http\Middleware\UniqueViewsCounter;
use Sashagm\Analytics\Http\Middleware\UniqueVisitorsCounter;

use Sashagm\Analytics\Traits\BootTrait;

class AnalyticsServiceProvider extends ServiceProvider
{


use BootTrait;

/**
* Register services.
Expand Down Expand Up @@ -44,8 +44,7 @@ public function boot()
]);
}

$this->app['router']->aliasMiddleware('unique.views', UniqueViewsCounter::class);
$this->app['router']->aliasMiddleware('unique.visitors', UniqueVisitorsCounter::class);
$this->starting();



Expand Down
7 changes: 5 additions & 2 deletions src/Traits/BootTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
use Exception;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Route;
use Sashagm\Analytics\Http\Middleware\UniqueViewsCounter;
use Sashagm\Analytics\Http\Middleware\UniqueVisitorsCounter;


trait BootTrait
{
public function boot()
public function starting()
{

$this->app['router']->aliasMiddleware('unique.views', UniqueViewsCounter::class);
$this->app['router']->aliasMiddleware('unique.visitors', UniqueVisitorsCounter::class);

}

Expand Down
75 changes: 75 additions & 0 deletions src/Traits/UniqueViewsCounterTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?php

namespace Sashagm\Analytics\Traits;


use Exception;
use Closure;
use Illuminate\Support\Facades\Log;
use Jenssegers\Agent\Facades\Agent;
use Illuminate\Support\Facades\Route;
use Sashagm\Analytics\Models\Visitor;
use Illuminate\Support\Facades\Cookie;
use Sashagm\Analytics\Models\Statistic;


trait UniqueViewsCounterTrait
{

public function start($request)
{

$isEnabled = config('analytics.enabled', true);
$cookieLifetime = config('analytics.cookie_lifetime', 60 * 24 * 30); // 30 дней
$savePeriod = config('analytics.save_period', 60 * 24 * 7); // 7 дней
$ip = $_SERVER['REMOTE_ADDR'];

// ...

if ($isEnabled) {
$routeName = $request->route()->getName();

if ($routeName && strpos($routeName, 'admin.') !== 0) {
$views = Cookie::get('views') ? json_decode(Cookie::get('views'), true) : [];

if (!is_null($views) && !in_array($routeName, $views)) {
$views[] = $routeName;
Cookie::queue('views', json_encode($views), $cookieLifetime);

Visitor::create([
'category' => 'route',
'value' => $routeName,
'route' => Route::current()->uri(),
'ip_address' => $ip,
]);

if (config('analytics.logger')) {
Log::info("Route {$routeName} visited by {$ip}!");
}
}
}

// сохраняем статистику раз в неделю
if (time() % ($savePeriod * 60) == 0) {
Statistic::create([
'category' => 'route',
'data' => json_encode($views),
]);

if (config('analytics.logger')) {
Log::info("Created logs to models Statistic!");
}
}
}


// ...

return $request;



}

}

49 changes: 49 additions & 0 deletions src/Traits/UniqueVisitorsCounterTrait.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

namespace Sashagm\Analytics\Traits;


use Exception;
use Closure;
use Sashagm\Analytics\Models\Visitor;
use Illuminate\Support\Facades\Cookie;


trait UniqueVisitorsCounterTrait
{

public function starting($request)
{

$ip = $_SERVER['REMOTE_ADDR'];
$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
$isBot = preg_match('/bot|crawl|slurp|spider/i', $ua);

if (!$isBot) {
// обработка для обычных пользователей
$user = "user";
} else {
// обработка для поисковых роботов
$user = "bot";
}


$visitorId = Cookie::get('visitor_id');

if (!$visitorId) {
$visitorId = uniqid();
Cookie::queue('visitor_id', $visitorId, 60 * 24 * 30);

Visitor::create([
'category' => $user,
'value' => $visitorId,
'ip_address' => $ip,
]);
}

return $request;

}

}

0 comments on commit c8b5601

Please sign in to comment.