| 
<?php
 use Illuminate\Support\Str;
 
 
 // Get Files List
 if (!function_exists('getFiles')) {
 function getFiles(string $dir)
 {
 if (!file_exists($dir)) return [];
 return array_values(array_diff(scandir($dir), ['.', '..']));
 }
 }
 
 // Module Path
 if (!function_exists('module_path')) {
 function module_path(?string $module = null, ?string $extra = null)
 {
 if (!$module) return app_path('Modules');
 if ($extra) $extra = implode(DIRECTORY_SEPARATOR, explode('/', $extra));
 
 return app_path('Modules') . DIRECTORY_SEPARATOR . $module . DIRECTORY_SEPARATOR . $extra;
 }
 }
 
 // Modules List
 if (!function_exists('modules')) {
 function modules()
 {
 $dir = module_path();
 return file_exists($dir) ? getFiles($dir) : [];
 }
 }
 
 // Config Path
 if (!function_exists('module_config_path')) {
 function module_config_path(string $module, ?string $extra = null)
 {
 return module_path($module, 'config' . ($extra ? '/' . $extra : null));
 }
 }
 
 // Database Path
 if (!function_exists('module_database_path')) {
 function module_database_path(string $module, ?string $extra = null)
 {
 return module_path($module, 'database' . ($extra ? '/' . $extra : null));
 }
 }
 
 // Resources Path
 if (!function_exists('module_resource_path')) {
 function module_resource_path(string $module, ?string $extra = null)
 {
 return module_path($module, 'resources' . ($extra ? '/' . $extra : null));
 }
 }
 
 // Convert studly to slug
 if (!function_exists('studlyToSlug')) {
 function studlyToSlug(string $text)
 {
 return Str::slug(strtolower(trim(preg_replace('/[A-Z-]/', ' $0', $text))));
 }
 }
 
 |