akaunting/app/Traits/Sources.php

68 lines
1.4 KiB
PHP
Raw Normal View History

2021-09-07 10:33:34 +03:00
<?php
namespace App\Traits;
2021-09-10 00:31:39 +03:00
use Illuminate\Support\Str;
2021-09-07 10:33:34 +03:00
trait Sources
{
public function isSourcable(): bool
{
$sourcable = $this->sourcable ?: true;
return ($sourcable === true) && in_array('created_from', $this->getFillable());
}
public function isNotSourcable(): bool
{
return ! $this->isSourcable();
}
2021-09-10 00:31:39 +03:00
public function getSourceName($request = null, $alias = null): string
2021-09-07 10:33:34 +03:00
{
2021-09-10 00:31:39 +03:00
$prefix = $this->getSourcePrefix($alias);
2021-09-07 10:33:34 +03:00
if (app()->runningInConsole()) {
2021-09-10 00:31:39 +03:00
$source = $prefix . 'console';
2021-09-07 10:33:34 +03:00
}
if (empty($source)) {
$request = $request ?: request();
2021-09-10 00:31:39 +03:00
$source = $request->isApi() ? $prefix . 'api' : null;
2021-09-07 10:33:34 +03:00
}
if (empty($source)) {
2021-09-10 00:31:39 +03:00
$source = $prefix . 'ui';
2021-09-07 10:33:34 +03:00
}
return $source;
}
2021-09-10 00:31:39 +03:00
public function getSourcePrefix($alias = null)
{
$alias = is_null($alias) ? $this->getSourceAlias() : $alias;
return $alias . '::';
}
public function getSourceAlias()
{
$prefix = '';
$namespaces = explode('\\', get_class($this));
if (empty($namespaces[0]) || (empty($namespaces[1]))) {
return $prefix;
}
if ($namespaces[0] != 'Modules') {
return 'core';
}
$prefix = Str::kebab($namespaces[1]);
return $prefix;
}
2021-09-07 10:33:34 +03:00
}