PHP code example of abdulbaset / activity-tracker

1. Go to this page and download the library: Download abdulbaset/activity-tracker library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

abdulbaset / activity-tracker example snippets


return [
        'enabled' => env('ACTIVITY_TRACKER_ENABLED', true),
        'table_name' => 'activity_logs',
        'log_method' => 'database', // Options: 'database', 'file'
        'log_file_path' => storage_path('logs/activity_logs.log'),
        'log_only_changes' => true,
        'log_login_auth' => true,
        'log_logout_auth' => true
    ];

  use Abdulbaset\ActivityTracker\Facades\ActivityTracker;

  ActivityTracker::event(string $event ,string $description ,array $otherInfo);
  ActivityTracker::retrieved(Model::class $model ,string $description ,array $otherInfo);
  ActivityTracker::visited(string $description ,array $otherInfo);
  ActivityTracker::log(Model::class $model, string $event ,string $description ,array $otherInfo);

    // ExampleModel.php

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;
    use Abdulbaset\ActivityTracker\Traits\ActivityTrackerTrait; // Adjust namespace based on your package structure

    class ExampleModel extends Model
    {
        use ActivityTrackerTrait;
    }

namespace App\Providers;

namespace Abdulbaset\ActivityTracker\Observers\ActivityTrackerObserver;
use App\Models\ExampleModel;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        ExampleModel::observe(ActivityTrackerObserver::class);
    }
}

namespace App\Http\Controllers\Blog;

use App\Http\Controllers\Controller;
use Abdulbaset\ActivityTracker\Facades\ActivityTracker;
use App\Models\Blog;

class BlogController extends Controller
{
    public function index()
    {
      $blogs = Blog::all();
      // set visited event for who visited the blogs page
      ActivityTracker::visited($description = 'Auth visited the blogs page', $otherInfo = ['local' => app()->getLocale()]);
      return view('blog.index');
    }

    public function show(string $id)
    {
      $blog = Blog::find($id);
      // set retrieved event for who gets the blog
      ActivityTracker::retrieved($model = $blog, $description = 'Auth show blog', $otherInfo = ['local' => app()->getLocale()]);
      return view('blog.show');
    }

    public function store(Request $request)
    {
      $blog = Blog::create([
        'title' => 'Test Blog Title',
        'slug' => 'test-blog-slug',
      ]);
      // set log event when you dont use the trait in blog model or observer at app provider
      ActivityTracker::log($model = $blog,$event = 'created' ,$description = 'blog created successfully');
      return view('blog.store');
    }

    public function update(Request $request,string $id)
    {
      $blog = Blog::findOrFail($id);
      $blog->update([
          'title' => 'Test Blog Title Update',
      ]);
      // set log event when you dont use the trait in blog model or observer at app provider
      ActivityTracker::log($model = $blog ,$event = 'updated' ,$description =  'blog updated successfully');
      return view('blog.update');
    }

    public function destroy(string $id)
    {
      $blog = Blog::findOrFail($id);
      // set log event when you dont use the trait in blog model or observer at app provider
      ActivityTracker::log($model = $blog ,$event = 'deleted' ,$description =  'blog deleted successfully');
      $blog->delete();
      return view('blog.destroy');
    }

    public function export(string $id)
    {
      // your logic here
      ActivityTracker::event($event = 'export-excel' ,$description = 'export blogs for excel file' , ['key' => 'value']);
      return view('blog.destroy');
    }

    // etc..
}

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Abdulbaset\ActivityTracker\Traits\ActivityTrackerTrait;

class Blog extends Model
{
    use HasFactory;
    // tracking activity log for created, updated and deleted
    use ActivityTrackerTrait;

    protected $table = 'blogs';

    protected $fillable = [
        'title',
        'slug',
        // etc..
    ];
}

namespace App\Providers;

use Abdulbaset\ActivityTracker\Observers\ActivityTrackerObserver;
use App\Models\Blog;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
      // tracking activity log for created, updated and deleted
        Blog::observe(ActivityTrackerObserver::class);
    }
}

namespace App\Observers;

use App\Models\Blog;
use Abdulbaset\ActivityTracker\Facades\ActivityTracker;

class BlogObserver
{
    public function created(Blog $blog)
    {
        ActivityTracker::log($blog, 'created', 'Blog created');
    }

    public function updated(Blog $blog)
    {
        ActivityTracker::log($blog, 'updated', 'Blog updated');
    }

    public function deleted(Blog $blog)
    {
        ActivityTracker::log($blog, 'deleted', 'Blog deleted');
    }

    // etc..
}

namespace App\Providers;

use App\Observers\BlogObserver;
use App\Models\Blog;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        Blog::observe(BlogObserver::class);
    }
}
bash
php artisan vendor:publish --provider="Abdulbaset\ActivityTracker\Providers\ActivityTrackerServiceProvider"
bash
php artisan migrate --path=vendor/abdulbaset/activity-tracker/src/Migrations
bash
php artisan migrate:rollback --path=vendor/abdulbaset/activity-tracker/src/Migrations
bash
php artisan migrate:refresh --path=vendor/abdulbaset/activity-tracker/src/Migrations