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/ */
// 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);
}
}