[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: ActivityLogger.php
<?php namespace Spatie\Activitylog; use Closure; use DateTimeInterface; use Illuminate\Contracts\Config\Repository; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Carbon; use Illuminate\Support\Str; use Illuminate\Support\Traits\Conditionable; use Illuminate\Support\Traits\Macroable; use Spatie\Activitylog\Contracts\Activity as ActivityContract; class ActivityLogger { use Conditionable; use Macroable; protected ?string $defaultLogName = null; protected CauserResolver $causerResolver; protected ActivityLogStatus $logStatus; protected ?ActivityContract $activity = null; protected LogBatch $batch; public function __construct(Repository $config, ActivityLogStatus $logStatus, LogBatch $batch, CauserResolver $causerResolver) { $this->causerResolver = $causerResolver; $this->batch = $batch; $this->defaultLogName = $config['activitylog']['default_log_name']; $this->logStatus = $logStatus; } public function setLogStatus(ActivityLogStatus $logStatus): static { $this->logStatus = $logStatus; return $this; } public function performedOn(Model $model): static { $this->getActivity()->subject()->associate($model); return $this; } public function on(Model $model): static { return $this->performedOn($model); } public function causedBy(Model | int | string | null $modelOrId): static { if ($modelOrId === null) { return $this; } $model = $this->causerResolver->resolve($modelOrId); $this->getActivity()->causer()->associate($model); return $this; } public function by(Model | int | string | null $modelOrId): static { return $this->causedBy($modelOrId); } public function causedByAnonymous(): static { $this->activity->causer_id = null; $this->activity->causer_type = null; return $this; } public function byAnonymous(): static { return $this->causedByAnonymous(); } public function event(string $event): static { return $this->setEvent($event); } public function setEvent(string $event): static { $this->activity->event = $event; return $this; } public function withProperties(mixed $properties): static { $this->getActivity()->properties = collect($properties); return $this; } public function withProperty(string $key, mixed $value): static { $this->getActivity()->properties = $this->getActivity()->properties->put($key, $value); return $this; } public function createdAt(DateTimeInterface $dateTime): static { $this->getActivity()->created_at = Carbon::instance($dateTime); return $this; } public function useLog(?string $logName): static { $this->getActivity()->log_name = $logName; return $this; } public function inLog(?string $logName): static { return $this->useLog($logName); } public function tap(callable $callback, string $eventName = null): static { call_user_func($callback, $this->getActivity(), $eventName); return $this; } public function enableLogging(): static { $this->logStatus->enable(); return $this; } public function disableLogging(): static { $this->logStatus->disable(); return $this; } public function log(string $description): ?ActivityContract { if ($this->logStatus->disabled()) { return null; } $activity = $this->activity; $activity->description = $this->replacePlaceholders( $activity->description ?? $description, $activity ); if (isset($activity->subject) && method_exists($activity->subject, 'tapActivity')) { $this->tap([$activity->subject, 'tapActivity'], $activity->event ?? ''); } $activity->save(); $this->activity = null; return $activity; } public function withoutLogs(Closure $callback): mixed { if ($this->logStatus->disabled()) { return $callback(); } $this->logStatus->disable(); try { return $callback(); } finally { $this->logStatus->enable(); } } protected function replacePlaceholders(string $description, ActivityContract $activity): string { return preg_replace_callback('/:[a-z0-9._-]+(?<![.])/i', function ($match) use ($activity) { $match = $match[0]; $attribute = Str::before(Str::after($match, ':'), '.'); if (! in_array($attribute, ['subject', 'causer', 'properties'])) { return $match; } $propertyName = substr($match, strpos($match, '.') + 1); $attributeValue = $activity->$attribute; if (is_null($attributeValue)) { return $match; } return data_get($attributeValue, $propertyName, $match); }, $description); } protected function getActivity(): ActivityContract { if (! $this->activity instanceof ActivityContract) { $this->activity = ActivitylogServiceProvider::getActivityModelInstance(); $this ->useLog($this->defaultLogName) ->withProperties([]) ->causedBy($this->causerResolver->resolve()); $this->activity->batch_uuid = $this->batch->getUuid(); } return $this->activity; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.85 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285