2016-03-25 01:18:05 -07:00
|
|
|
|
<?php
|
|
|
|
|
namespace App\Models;
|
|
|
|
|
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
2016-12-26 15:19:04 -08:00
|
|
|
|
use Illuminate\Notifications\Notifiable;
|
2016-03-25 01:18:05 -07:00
|
|
|
|
use Watson\Validating\ValidatingTrait;
|
2016-05-14 16:09:00 -07:00
|
|
|
|
use Schema;
|
2016-03-25 01:18:05 -07:00
|
|
|
|
|
|
|
|
|
class Setting extends Model
|
|
|
|
|
{
|
2016-12-26 15:19:04 -08:00
|
|
|
|
use Notifiable;
|
2016-03-25 01:18:05 -07:00
|
|
|
|
protected $injectUniqueIdentifier = true;
|
|
|
|
|
use ValidatingTrait;
|
|
|
|
|
|
|
|
|
|
protected $rules = [
|
2016-06-01 15:45:05 -07:00
|
|
|
|
"brand" => 'required|min:1|numeric',
|
2017-08-22 10:41:59 -07:00
|
|
|
|
"qr_text" => 'max:31|nullable',
|
2016-06-01 15:45:05 -07:00
|
|
|
|
"logo_img" => 'mimes:jpeg,bmp,png,gif',
|
2017-08-22 10:41:59 -07:00
|
|
|
|
"alert_email" => 'email_array|nullable',
|
2016-06-01 15:45:05 -07:00
|
|
|
|
"default_currency" => 'required',
|
|
|
|
|
"locale" => 'required',
|
2017-08-22 10:41:59 -07:00
|
|
|
|
"slack_endpoint" => 'url|required_with:slack_channel|nullable',
|
|
|
|
|
"slack_channel" => 'regex:/(?<!\w)#\w+/|required_with:slack_endpoint|nullable',
|
2017-07-07 18:06:31 -07:00
|
|
|
|
"slack_botname" => 'string|nullable',
|
2016-06-01 15:45:05 -07:00
|
|
|
|
'labels_per_page' => 'numeric',
|
|
|
|
|
'labels_width' => 'numeric',
|
|
|
|
|
'labels_height' => 'numeric',
|
2017-08-22 10:41:59 -07:00
|
|
|
|
'labels_pmargin_left' => 'numeric|nullable',
|
|
|
|
|
'labels_pmargin_right' => 'numeric|nullable',
|
|
|
|
|
'labels_pmargin_top' => 'numeric|nullable',
|
|
|
|
|
'labels_pmargin_bottom' => 'numeric|nullable',
|
|
|
|
|
'labels_display_bgutter' => 'numeric|nullable',
|
|
|
|
|
'labels_display_sgutter' => 'numeric|nullable',
|
2016-06-01 15:45:05 -07:00
|
|
|
|
'labels_fontsize' => 'numeric|min:5',
|
2017-08-22 10:41:59 -07:00
|
|
|
|
'labels_pagewidth' => 'numeric|nullable',
|
|
|
|
|
'labels_pageheight' => 'numeric|nullable',
|
|
|
|
|
"ldap_server" => 'sometimes|required_if:ldap_enabled,1|url|nullable',
|
|
|
|
|
"ldap_uname" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_basedn" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_filter" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_username_field" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_fname_field" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_lname_field" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_auth_filter_query" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
|
|
|
|
"ldap_version" => 'sometimes|required_if:ldap_enabled,1|nullable',
|
2017-07-25 19:36:38 -07:00
|
|
|
|
"thumbnail_max_h" => 'numeric|max:500|min:25',
|
2017-08-22 20:32:39 -07:00
|
|
|
|
"pwd_secure_min" => "numeric|required|min:5",
|
2016-03-25 01:18:05 -07:00
|
|
|
|
];
|
|
|
|
|
|
2016-06-01 15:45:05 -07:00
|
|
|
|
protected $fillable = ['site_name','email_domain','email_format','username_format'];
|
2016-03-25 01:18:05 -07:00
|
|
|
|
|
|
|
|
|
public static function getSettings()
|
|
|
|
|
{
|
|
|
|
|
static $static_cache = null;
|
2016-11-29 05:19:18 -08:00
|
|
|
|
|
2016-12-29 14:02:18 -08:00
|
|
|
|
if (!$static_cache) {
|
|
|
|
|
if (Schema::hasTable('settings')) {
|
|
|
|
|
$static_cache = Setting::first();
|
2016-11-28 22:38:11 -08:00
|
|
|
|
}
|
2016-12-29 14:02:18 -08:00
|
|
|
|
}
|
2016-11-28 22:38:11 -08:00
|
|
|
|
|
2016-11-29 05:19:18 -08:00
|
|
|
|
return $static_cache;
|
2016-11-28 22:38:11 -08:00
|
|
|
|
|
2016-03-25 01:18:05 -07:00
|
|
|
|
}
|
|
|
|
|
|
2016-06-22 12:27:41 -07:00
|
|
|
|
public static function setupCompleted()
|
|
|
|
|
{
|
2016-12-19 11:04:28 -08:00
|
|
|
|
|
2016-07-13 05:47:32 -07:00
|
|
|
|
$users_table_exists = Schema::hasTable('users');
|
|
|
|
|
$settings_table_exists = Schema::hasTable('settings');
|
2016-12-19 11:04:28 -08:00
|
|
|
|
|
2016-06-22 12:27:41 -07:00
|
|
|
|
if ($users_table_exists && $settings_table_exists) {
|
|
|
|
|
$usercount = User::withTrashed()->count();
|
2016-12-19 11:04:28 -08:00
|
|
|
|
$settingsCount = Setting::count();
|
|
|
|
|
return ($usercount > 0 && $settingsCount > 0);
|
2016-06-22 12:27:41 -07:00
|
|
|
|
}
|
2016-05-14 16:09:00 -07:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2016-03-25 01:18:05 -07:00
|
|
|
|
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;
|
|
|
|
|
}
|
2016-12-26 15:19:04 -08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The url for slack notifications.
|
|
|
|
|
* Used by Notifiable trait.
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
|
|
|
|
public function routeNotificationForSlack()
|
|
|
|
|
{
|
|
|
|
|
// At this point the endpoint is the same for everything.
|
|
|
|
|
// In the future this may want to be adapted for individual notifications.
|
|
|
|
|
return $this->slack_endpoint;
|
|
|
|
|
}
|
2017-08-22 20:32:39 -07:00
|
|
|
|
|
|
|
|
|
public function passwordComplexityStringToArray()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
$this->pwd_secure_complexity = 'numbers|letters|case_diff';
|
|
|
|
|
$complexity_array_split = array();
|
|
|
|
|
$complexity_array = array();
|
|
|
|
|
|
|
|
|
|
if (($this->pwd_secure_complexity) && ($this->pwd_secure_complexity!='')) {
|
|
|
|
|
$complexity_array_split = explode('|',$this->pwd_secure_complexity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for ($x = 0; $x < count($complexity_array_split); $x++) {
|
|
|
|
|
$complexity_array[$complexity_array_split[$x]] = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $complexity_array;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function passwordComplexityToFormattedString($array) {
|
|
|
|
|
// $array = array();
|
|
|
|
|
$string = '';
|
|
|
|
|
for ($x = 0; $x <= count($array); $x++) {
|
|
|
|
|
$string .= '|'.$array[$x];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $string;
|
|
|
|
|
}
|
|
|
|
|
|
2016-03-25 01:18:05 -07:00
|
|
|
|
}
|