mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 09:21:46 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Services;
 | |
| 
 | |
| use Illuminate\Support\Facades\Artisan;
 | |
| use Illuminate\Support\Facades\File;
 | |
| 
 | |
| class ThemeService
 | |
| {
 | |
|     private $path;
 | |
|     private $theme;
 | |
| 
 | |
|     public function __construct($theme)
 | |
|     {
 | |
|         $this->theme = $theme;
 | |
|         $this->path = $path = public_path('theme/');
 | |
|     }
 | |
| 
 | |
|     public function init()
 | |
|     {
 | |
|         $themeConfigFile = $this->path . "{$this->theme}/config.json";
 | |
|         if (!File::exists($themeConfigFile)) abort(500, "{$this->theme}主题不存在");
 | |
|         $themeConfig = json_decode(File::get($themeConfigFile), true);
 | |
|         if (!isset($themeConfig['configs']) || !is_array($themeConfig)) abort(500, "{$this->theme}主题配置文件有误");
 | |
|         $configs = $themeConfig['configs'];
 | |
|         $data = [];
 | |
|         foreach ($configs as $config) {
 | |
|             $data[$config['field_name']] = isset($config['default_value']) ? $config['default_value'] : '';
 | |
|         }
 | |
| 
 | |
|         $data = var_export($data, 1);
 | |
|         try {
 | |
|             if (!File::put(base_path() . "/config/theme/{$this->theme}.php", "<?php\n return $data ;")) {
 | |
|                 abort(500, "{$this->theme}初始化失败");
 | |
|             }
 | |
|         } catch (\Exception $e) {
 | |
|             abort(500, '请检查V2Board目录权限');
 | |
|         }
 | |
| 
 | |
|         try {
 | |
|             Artisan::call('config:cache');
 | |
|             while (true) {
 | |
|                 if (config("theme.{$this->theme}")) break;
 | |
|             }
 | |
|         } catch (\Exception $e) {
 | |
|             abort(500, "{$this->theme}初始化失败");
 | |
|         }
 | |
|     }
 | |
| }
 |