109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php namespace Gdoo\Model\Services;
 | |
| 
 | |
| use App\Support\Hook;
 | |
| 
 | |
| class ModuleService
 | |
| {
 | |
|     public static $modules;
 | |
| 
 | |
|     public static $details = [];
 | |
| 
 | |
|     public static $dialogs = [];
 | |
| 
 | |
|     public static $widgets = [];
 | |
| 
 | |
|     public static $badges = [];
 | |
| 
 | |
|     public static function details()
 | |
|     {
 | |
|         return static::$details;
 | |
|     }
 | |
| 
 | |
|     public static function all()
 | |
|     {
 | |
|         if (static::$modules) {
 | |
|             return static::$modules;
 | |
|         }
 | |
| 
 | |
|         $path = base_path().'/app/Gdoo';
 | |
| 
 | |
|         if (is_dir($path)) {
 | |
|             $folders = new \DirectoryIterator($path);
 | |
| 
 | |
|             foreach ($folders as $folder) {
 | |
|                 if (!$folder->isDot() && $folder->isDir()) {
 | |
|                     $folder = $folder->getFileName();
 | |
|                     $file = $path.'/'.$folder.'/config.php';
 | |
|                     
 | |
|                     if (is_file($file)) {
 | |
|                         static::$modules[$folder] = $path.'/'.$folder;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return static::$modules;
 | |
|     }
 | |
| 
 | |
|     public static function allWithDetails()
 | |
|     {
 | |
|         $modules = static::all();
 | |
|         $json = [];
 | |
|         foreach ($modules as $key => $module) {
 | |
|             $file = $module.'/config.php';
 | |
| 
 | |
|             if (is_file($file)) {
 | |
|                 $content = include($file);
 | |
|                 $content['path'] = $module;
 | |
| 
 | |
|                 if (not_empty($content['listens'])) {
 | |
|                     foreach ($content['listens'] as $k => $v) {
 | |
|                         Hook::listen($k, $v);
 | |
|                     }
 | |
|                 }
 | |
| 
 | |
|                 if (not_empty($content['widgets'])) {
 | |
|                     static::$widgets = static::$widgets + $content['widgets'];
 | |
|                 }
 | |
| 
 | |
|                 if (not_empty($content['badges'])) {
 | |
|                     static::$badges = static::$badges + $content['badges'];
 | |
|                 }
 | |
| 
 | |
|                 // 获取对话框
 | |
|                 if (not_empty($content['dialogs'])) {
 | |
|                     static::$dialogs = static::$dialogs + $content['dialogs'];
 | |
|                 }
 | |
| 
 | |
|                 $json[lcfirst($key)] = $content;
 | |
|             }
 | |
|         }
 | |
|         static::$details = $json;
 | |
|         return $json;
 | |
|     }
 | |
| 
 | |
|     public static function widgets($key = null)
 | |
|     {
 | |
|         if ($key) {
 | |
|             return static::$widgets[$key];
 | |
|         }
 | |
|         return static::$widgets;
 | |
|     }
 | |
| 
 | |
|     public static function dialogs($key = null)
 | |
|     {
 | |
|         if ($key) {
 | |
|             return static::$dialogs[$key];
 | |
|         }
 | |
|         return static::$dialogs;
 | |
|     }
 | |
| 
 | |
|     public static function badges($key = null)
 | |
|     {
 | |
|         if ($key) {
 | |
|             return static::$badges[$key];
 | |
|         }
 | |
|         return static::$badges;
 | |
|     }
 | |
| 
 | |
| }
 |