hume/session-visits-bundle

This bundle tracking visits by Symfony session.

dev-main 2024-04-03 02:53 UTC

README

Hello, this bundle is my idea how visits should be counted and stored in database.

SessionVisitsBundle register visit by session and flush to database. Bundle track visits, process and store week, month, year visits in database.

Contain Components

  • VisitsTracker
  • VisitsFinder
  • DateSystem

Warning

At this moment it's only sandbox in which I throw my new skills and ideas so I don't recommend use bundle in production.

Installation

SessionVisitsBundle require php8.2, Symfony7, Doctrine-bundle2.12 to run. Make sure Composer is installed on your machine.

You can install it via Composer:

composer require hume/session-visits-bundle:dev-main

Just in case, check this line at config/bundle.php is identical:

<?php
// config/bundles.php
Hume\SessionVisitsBundle\HumeSessionVisitsBundle::class => ['dev' => true, 'test' => true],

Note

set ['all' => true] for production but as I said, is not recommended.

Basic Usage

You have to just tag Controller in which you want tracking visits.

<?php
// src/Controller/ExampleController.php

declare(strict_types=1);

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Hume\SessionVisitsBundle\Controller\VisitsTrackableController;

class ExampleController implements VisitsTrackableController
{
    public function indexAction(): Response
    {
        return new Response('Hello world!')
    }
}

And that's it! Your controller is listened by VisitsTracker subscriber kernel.controller.

Tip

If you want more about events listners and subscribers check this out: https://symfony.com/doc/current/event_dispatcher.html

Or constructor injection

<?php
// src/Controller/ExampleController.php

declare(strict_types=1);

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;
use Hume\SessionVisitsBundle\Component\VisitsTracker\VisitsTracker;

class ExampleController
{
    public function __construct(private visitsTracker $visitsTracker)
    {
        $visitsTracker->start();
    }
    
    public function indexAction(VisitsTracker $visitsTracker): Response
    {
        return new Response('Hello world!')
    }
}

Fetching Visits from Database

Session Visits Bundle use Doctrine-Bundle for database operations. Recommended is using Repository to fetch visits objects.

Important

Check find and sum methods in Visits Repository Check visits model in Visits Entity

Repository:

use Hume\VisitsSessionBundle\Repository\VisitsRepository;

DateSystem

Caution

Section under construction.

License

MIT