����JFIF��x�x����'
Server IP : 78.140.185.180 / Your IP : 18.220.98.157 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 : /home/builderbox/public_html/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)]); } }