1. Go to this page and download the library: Download dcodegroup/activity-log 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/ */
dcodegroup / activity-log example snippets
namespace App\Models;
use Dcodegroup\ActivityLog\Contracts\HasActivityUser;
class User extends Authenticatable implements HasActivityUser
{
public function getActivityLogUserName(): string
{
return $this->name;
}
public function getActivityLogEmail(): string
{
return $this->email;
}
public function getActivityLogUser(): array
{
return [
'id' => $this->id,
'full_name' => $this->getActivityLogUserName(),
'email' => $this->getActivityLogEmail(),
];
}
use Dcodegroup\ActivityLog\Models\ActivityLog;
return [
/*
|--------------------------------------------------------------------------
| Middleware
|--------------------------------------------------------------------------
|
| What middleware should the package apply.
|
*/
'middleware' => ['web', 'auth'],
/*
|--------------------------------------------------------------------------
| Routing
|--------------------------------------------------------------------------
|
| Here you can configure the route paths and route name variables.
|
| What should the route path for the activity log be
| eg 'api/generic/activity-logs'
|
| What should the route name for the activity log be
| eg eg 'api.generic.activity-logs',
*/
'route_path' => env('LARAVEL_ACTIVITY_LOG_ROUTE_PATH', 'activity-logs'),
'route_name' => env('LARAVEL_ACTIVITY_LOG_ROUTE_NAME', 'activity-logs'),
/*
|--------------------------------------------------------------------------
| Model and Binding
|--------------------------------------------------------------------------
|
| binding - eg 'activity-logs'
| model - eg 'ActivityLog'
|
*/
'binding' => env('LARAVEL_ACTIVITY_LOG_MODEL_BINDING', 'activity-logs'),
'activity_log_model' => ActivityLog::class,
/*
|--------------------------------------------------------------------------
| Formatting
|--------------------------------------------------------------------------
|
| Configuration here is for display configuration
|
*/
'datetime_format' => env('LARAVEL_ACTIVITY_LOG_DATETIME_FORMAT', 'd-m-Y H:ia'),
'date_format' => env('LARAVEL_ACTIVITY_LOG_DATE_FORMAT', 'd.m.Y'),
/*
|--------------------------------------------------------------------------
| Pagination
|--------------------------------------------------------------------------
|
| Configuration here is for pagination
|
*/
'default_filter_pagination' => env('LARAVEL_ACTIVITY_LOG_PAGINATION', 50),
/*
|--------------------------------------------------------------------------
| User
|--------------------------------------------------------------------------
|
| Configuration here is for the user model and table
| eg 'User'
*/
'user_relationship' => env('LARAVEL_ACTIVITY_LOG_USER_RELATIONSHIP', 'user'),
'user_model' => \App\Models\User::class,
'user_table' => env('LARAVEL_ACTIVITY_LOG_USERS_TABLE', 'users'),
/*
|--------------------------------------------------------------------------
| Communication log
|--------------------------------------------------------------------------
|
|
*/
'communication_log_model' => \Dcodegroup\ActivityLog\Models\CommunicationLog::class,
'communication_log_table' => env('LARAVEL_ACTIVITY_LOG_COMMUNICATION_LOG_TABLE', 'communication_logs'),
'communication_log_relationship' => env('LARAVEL_ACTIVITY_LOG_COMMUNICATION_LOG_RELATIONSHIP', 'communicationLog'),
/*
|--------------------------------------------------------------------------
| Filter Builder
|--------------------------------------------------------------------------
|
| Configuration here is for the filter builder
| eg 'FilterBuilder class: App\Support\QueryBuilder\Filters\FilterBuilder'
*/
'filter_builder_path' => env('LARAVEL_ACTIVITY_LOG_FILTER_BUILDER_PATH', ''),
/*
|--------------------------------------------------------------------------
| Events
|--------------------------------------------------------------------------
|
| Configuration here is for the events
| eg 'open_modal_event' => 'openModal'
*/
'open_modal_event' => env('LARAVEL_ACTIVITY_LOG_EVENT_OPEN_MODEL', 'openModal'),
'reload_event' => env('LARAVEL_ACTIVITY_LOG_EVENT_RELOAD', 'getActivities'),
];
public function modelRelation(): Collection
{
return collect([
'account_id' => collect([ // column change in model
'label' => 'Account', // attribute label display in activity log description
'modelClass' => Account::class, // relationship model
'modelKey' => 'name', // columns display instead
]),
......
])
// Creating an activity log
$activityLog = $model->createActivityLog([
'type' => \Dcodegroup\ActivityLog\Models\ActivityLog::TYPE_DATA // if type is null default type will be TYPE_DATA, we support 3 other types: TYPE_STATUS, TYPE_COMMENT, TYPE_NOTIFICATION
'title' => 'Updated profile information',
'description' => 'Updated user profile information',
// Additional custom fields as needed
'communication_log_id' => '' //
class OrderItem extends Model
{
...
public function targetModel(): self|Model
{
return $this->order;
}
}
public function getActivityLogModelLabel(): string
{
/**
* This can be any field or method to return the label but the return must be a string
*/
return $this->reference;
}
public function getActivityLogModelLabel(): string
{
/**
* This can be any field or method to return the label but the return must be a string
*/
return __('order.title');
}
public function getActivityLogModelKey(): string
{
return (string) $this->custom_field_name;
}
public function getActivityLogModelExcludeFields(): array
{
return ['xero_api_token', 'stripe_api_token'];
}
You can use a custom formatter for fields in your model by using the `activityLogFieldFormatters` method.
example. Add the following to the model
public function activityLogEntityName(): string
{
return Arr::join(Str::ucsplit(class_basename($this)), ' ').' (id:'.$this->id.')';
}
// Creating a communication log
$communicationLog = $model->createCommunicationLog([
'type' =>
'cc' => ['[email protected]'],
'bcc' => ['[email protected]'],
'subject' => 'Subject of the email',
], '[email protected]', 'Content of the email');
...
use Dcodegroup\ActivityLog\Support\Traits\ActivityLoggable;
class Order extends Model
{
use ActivityLoggable;
...
}
$model->createActivityLog([
'type' => \Dcodegroup\ActivityLog\Models\ActivityLog::TYPE_COMMENT // if type is null default type will be TYPE_DATA, we support 3 other types: TYPE_STATUS, TYPE_COMMENT, TYPE_NOTIFICATION
'title' => 'left a comment.',
'description' => 'left a comment',
]);