| Server IP : 54.233.248.239 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/vendor/spatie/laravel-activitylog/src/ |
Upload File : |
<?php
namespace Spatie\Activitylog;
use Illuminate\Auth\AuthManager;
use Illuminate\Database\Eloquent\Model;
use Spatie\Activitylog\Models\Activity;
use Illuminate\Support\Traits\Macroable;
use Illuminate\Contracts\Config\Repository;
use Spatie\Activitylog\Exceptions\CouldNotLogActivity;
class ActivityLogger
{
use Macroable;
/** @var \Illuminate\Auth\AuthManager */
protected $auth;
protected $logName = '';
/** @var bool */
protected $logEnabled;
/** @var \Illuminate\Database\Eloquent\Model */
protected $performedOn;
/** @var \Illuminate\Database\Eloquent\Model */
protected $causedBy;
/** @var \Illuminate\Support\Collection */
protected $properties;
/** @var string */
protected $authDriver;
public function __construct(AuthManager $auth, Repository $config)
{
$this->auth = $auth;
$this->properties = collect();
$this->authDriver = $config['laravel-activitylog']['default_auth_driver'] ?? $auth->getDefaultDriver();
if (starts_with(app()->version(), '5.1')) {
$this->causedBy = $auth->driver($this->authDriver)->user();
} else {
$this->causedBy = $auth->guard($this->authDriver)->user();
}
$this->logName = $config['laravel-activitylog']['default_log_name'];
$this->logEnabled = $config['laravel-activitylog']['enabled'] ?? true;
}
public function performedOn(Model $model)
{
$this->performedOn = $model;
return $this;
}
public function on(Model $model)
{
return $this->performedOn($model);
}
/**
* @param \Illuminate\Database\Eloquent\Model|int|string $modelOrId
*
* @return $this
*/
public function causedBy($modelOrId)
{
$model = $this->normalizeCauser($modelOrId);
$this->causedBy = $model;
return $this;
}
public function by($modelOrId)
{
return $this->causedBy($modelOrId);
}
/**
* @param array|\Illuminate\Support\Collection $properties
*
* @return $this
*/
public function withProperties($properties)
{
$this->properties = collect($properties);
return $this;
}
/**
* @param string $key
* @param mixed $value
*
* @return $this
*/
public function withProperty(string $key, $value)
{
$this->properties->put($key, $value);
return $this;
}
public function useLog(string $logName)
{
$this->logName = $logName;
return $this;
}
public function inLog(string $logName)
{
return $this->useLog($logName);
}
/**
* @param string $description
*
* @return null|mixed
*/
public function log(string $description)
{
if (! $this->logEnabled) {
return;
}
$activity = ActivitylogServiceProvider::getActivityModelInstance();
if ($this->performedOn) {
$activity->subject()->associate($this->performedOn);
}
if ($this->causedBy) {
$activity->causer()->associate($this->causedBy);
}
$activity->properties = $this->properties;
$activity->description = $this->replacePlaceholders($description, $activity);
$activity->log_name = $this->logName;
$activity->save();
return $activity;
}
/**
* @param \Illuminate\Database\Eloquent\Model|int|string $modelOrId
*
* @throws \Spatie\Activitylog\Exceptions\CouldNotLogActivity
*
* @return \Illuminate\Database\Eloquent\Model
*/
protected function normalizeCauser($modelOrId): Model
{
if ($modelOrId instanceof Model) {
return $modelOrId;
}
if (starts_with(app()->version(), '5.1')) {
$model = $this->auth->driver($this->authDriver)->getProvider()->retrieveById($modelOrId);
} else {
$model = $this->auth->guard($this->authDriver)->getProvider()->retrieveById($modelOrId);
}
if ($model) {
return $model;
}
throw CouldNotLogActivity::couldNotDetermineUser($modelOrId);
}
protected function replacePlaceholders(string $description, Activity $activity): string
{
return preg_replace_callback('/:[a-z0-9._-]+/i', function ($match) use ($activity) {
$match = $match[0];
$attribute = (string) string($match)->between(':', '.');
if (! in_array($attribute, ['subject', 'causer', 'properties'])) {
return $match;
}
$propertyName = substr($match, strpos($match, '.') + 1);
$attributeValue = $activity->$attribute;
if (is_null($attributeValue)) {
return $match;
}
$attributeValue = $attributeValue->toArray();
return array_get($attributeValue, $propertyName, $match);
}, $description);
}
}