michaelnabil230/laravel-analytics

这是我创建的laravel-analytics包

dev-main 2023-07-03 07:55 UTC

README

这是我创建的laravel-analytics包

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

这里应该放置您的描述。限制为一两段话。可以考虑添加一个小的示例。

安装

您可以通过composer安装此包

composer require michaelnabil230/laravel-analytics

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="laravel-analytics-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="laravel-analytics-config"

这是已发布配置文件的内容

return [

    'ip_model' => Ip::class,
    'session_visiter_model' => SessionVisiter::class,
    'visiter_model' => Visiter::class,

    /*
     * Which route paths are not trackable?
     */
    'ignore_paths' => [
        // 'api/*',
    ],

    /*
     * The Do Not Track Ips is used to disable Analytics for some IP addresses:
     *
     *     '127.0.0.1', '192.168.1.1'
     *
     * You can set ranges of IPs
     *     '192.168.0.1-192.168.0.100'
     *
     * And use net masks
     *      127.0.0.0/24 -> range  127.0.0.1 - 127.0.0.255
     *     '172.17.0.0/255.255.0.0'
     */
    'do_not_track_ips' => [
        '127.0.0.2',
    ],

    /*
    |--------------------------------------------------------------------------
    | Drivers GeoIp
    |--------------------------------------------------------------------------
    |
    | Should the geoip data be collected?
    |
    | Set the geoip driver.
    |
    | Supported: "free_geo_ip", "ip_stack"
    */
    'geo_ip' => [
        'enabled' => true,
        'default' => 'free_geo_ip',
        'drivers' => [
            'ip_stack' => [
                'driver' => MichaelNabil230\LaravelAnalytics\GeoIp\IpStack::class,
                'options' => [
                    'api_key' => '',
                    'headers' => [
                        // 'X-First' => 'foo',
                    ],
                ],
            ],
            'free_geo_ip' => [
                'driver' => MichaelNabil230\LaravelAnalytics\GeoIp\FreeGeoIp::class,
                'options' => [
                    'headers' => [
                        // 'X-First' => 'foo',
                    ],
                ],
            ],
        ],
    ],

    /*
     * All bot if you want defected one.
     */
    'bot_browsers' => [
        'curl',
        'python-requests',
        'python-urllib',
        'wget',
        'unk',
        'perl',
        'go-http-client',
    ],

    /*
     * Laravel internal variables on user authentication and login.
     */
    'authentication' => [
        'guards' => [], // defaults to ['web']
    ],
];

注册中间件

您可以在app/Http/Kernel.php文件中注册包的中间件

<?php 

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {
    /**
    * The application's route middleware.
    *
    * @var array
    */
    protected $routeMiddleware = [
        /**** OTHER MIDDLEWARE ****/
        'analytics' => \MichaelNabil230\LaravelAnalytics\Middleware\Analytics::class,
    ];
}

您可以将页面视图中间件添加到特定的路由组中,例如web.php,如下所示

Route::middleware('analytics')->group(function () {
    // ...
});

然后您可以在路由中传递typeRequest,默认使用中间件为web-request

Route::middleware('analytics:api-request')->group(function () {
    // ...
});

用法

use Illuminate\Support\Carbon;
use MichaelNabil230\LaravelAnalytics\LaravelAnalyticQueries;

$topEvents = LaravelAnalyticQueries::topVisiterEvent()
        // ->where('event', 'test event')
        // ->is('bots')
        // ->is('ajax', false)
        // ->uniqueSession()
        // ->uniqueIp()
        // ->with(['data'])
        // ->take(10)
        // ->select('id') // Is very important: Don't use `select` here pass what u need in `topVisiterEvent`
        // ->addSelect([DB::raw("COUNT(*) as 'count'")])
        ->period(Carbon::now(), Carbon::now()->addDays(7))
        ->limit(10)
        ->get();

测试

composer test

支持

michaelnabil230 michaelnabil230



变更日志

请参阅变更日志了解最近的变化信息。

贡献

请参阅贡献指南了解详细信息。

安全漏洞

请审查我们的安全策略了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件了解更多信息。