mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 06:04:08 -08:00
140 lines
4 KiB
PHP
Executable file
140 lines
4 KiB
PHP
Executable file
<?php
|
||
namespace App\Models;
|
||
|
||
use Illuminate\Database\Eloquent\Model;
|
||
use Watson\Validating\ValidatingTrait;
|
||
use Schema;
|
||
|
||
class Setting extends Model
|
||
{
|
||
protected $injectUniqueIdentifier = true;
|
||
use ValidatingTrait;
|
||
|
||
protected $rules = [
|
||
"site_name" => 'required|min:1',
|
||
"brand" => 'required|min:1|numeric',
|
||
"alert_threshold" => 'numeric',
|
||
"alert_interval" => 'numeric',
|
||
"qr_text" => 'min:1|max:31',
|
||
"custom_css" => 'string',
|
||
"slack_endpoint" => 'url',
|
||
"default_currency" => 'required',
|
||
"slack_channel" => 'regex:/(?<!\w)#\w+/',
|
||
"slack_botname" => 'string',
|
||
"ldap_server" => 'sometimes|required_if:ldap_enabled,1|url',
|
||
"ldap_uname" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_pword" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_basedn" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_filter" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_username_field" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_lname_field" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_auth_filter_query" => 'sometimes|required_if:ldap_enabled,1',
|
||
"ldap_version" => 'sometimes|required_if:ldap_enabled,1',
|
||
];
|
||
|
||
protected $fillable = ['site_name'];
|
||
|
||
public static function getSettings()
|
||
{
|
||
static $static_cache = null;
|
||
|
||
if (!$static_cache) {
|
||
$static_cache = Setting::first();
|
||
}
|
||
return $static_cache;
|
||
}
|
||
|
||
public static function setupCompleted() {
|
||
|
||
$users_table_exists = Schema::hasTable('users');
|
||
$settings_table_exists = Schema::hasTable('settings');
|
||
|
||
|
||
if ($users_table_exists && $settings_table_exists) {
|
||
$usercount = User::withTrashed()->count();
|
||
|
||
if ($usercount > 0) {
|
||
return true;
|
||
}
|
||
return false;
|
||
} else {
|
||
return false;
|
||
}
|
||
return false;
|
||
|
||
|
||
|
||
}
|
||
|
||
public function lar_ver()
|
||
{
|
||
$app = \App::getFacadeApplication();
|
||
return $app::VERSION;
|
||
}
|
||
|
||
public static function getDefaultEula()
|
||
{
|
||
|
||
$Parsedown = new \Parsedown();
|
||
if (Setting::getSettings()->default_eula_text) {
|
||
return $Parsedown->text(e(Setting::getSettings()->default_eula_text));
|
||
} else {
|
||
return null;
|
||
}
|
||
|
||
}
|
||
|
||
public function show_custom_css()
|
||
{
|
||
$custom_css = Setting::getSettings()->custom_css;
|
||
$custom_css = e($custom_css);
|
||
// Needed for modifying the bootstrap nav :(
|
||
$custom_css = str_ireplace('script', 'SCRIPTS-NOT-ALLOWED-HERE', $custom_css);
|
||
$custom_css = str_replace('>', '>', $custom_css);
|
||
return $custom_css;
|
||
}
|
||
|
||
/**
|
||
* Converts bytes into human readable file size.
|
||
*
|
||
* @param string $bytes
|
||
* @return string human readable file size (2,87 Мб)
|
||
* @author Mogilev Arseny
|
||
*/
|
||
public static function fileSizeConvert($bytes)
|
||
{
|
||
$bytes = floatval($bytes);
|
||
$arBytes = array(
|
||
0 => array(
|
||
"UNIT" => "TB",
|
||
"VALUE" => pow(1024, 4)
|
||
),
|
||
1 => array(
|
||
"UNIT" => "GB",
|
||
"VALUE" => pow(1024, 3)
|
||
),
|
||
2 => array(
|
||
"UNIT" => "MB",
|
||
"VALUE" => pow(1024, 2)
|
||
),
|
||
3 => array(
|
||
"UNIT" => "KB",
|
||
"VALUE" => 1024
|
||
),
|
||
4 => array(
|
||
"UNIT" => "B",
|
||
"VALUE" => 1
|
||
),
|
||
);
|
||
|
||
foreach ($arBytes as $arItem) {
|
||
if ($bytes >= $arItem["VALUE"]) {
|
||
$result = $bytes / $arItem["VALUE"];
|
||
$result = round($result, 2) .$arItem["UNIT"];
|
||
break;
|
||
}
|
||
}
|
||
return $result;
|
||
}
|
||
}
|