!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/wataxi.picotech.app/public_html/vendor/akaunting/module/src/Generators/   drwxr-xr-x
Free 28.54 GB of 117.98 GB (24.19%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace Akaunting\Module\Generators;

use 
Illuminate\Config\Repository as Config;
use 
Illuminate\Console\Command as Console;
use 
Illuminate\Filesystem\Filesystem;
use 
Illuminate\Support\Str;
use 
Akaunting\Module\FileRepository;
use 
Akaunting\Module\Support\Config\GenerateConfigReader;
use 
Akaunting\Module\Support\Stub;

class 
ModuleGenerator extends Generator
{
    
/**
     * The module alias will created.
     *
     * @var string
     */
    
protected $alias;

    
/**
     * The laravel config instance.
     *
     * @var Config
     */
    
protected $config;

    
/**
     * The laravel filesystem instance.
     *
     * @var Filesystem
     */
    
protected $filesystem;

    
/**
     * The laravel console instance.
     *
     * @var Console
     */
    
protected $console;

    
/**
     * The module instance.
     *
     * @var \Akaunting\Module\Module
     */
    
protected $module;

    
/**
     * Force status.
     *
     * @var bool
     */
    
protected $force false;

    
/**
     * Generate a plain module.
     *
     * @var bool
     */
    
protected $plain false;

    
/**
     * The constructor.
     * @param $alias
     * @param FileRepository $module
     * @param Config     $config
     * @param Filesystem $filesystem
     * @param Console    $console
     */
    
public function __construct(
        
$alias,
        
FileRepository $module null,
        
Config $config null,
        
Filesystem $filesystem null,
        
Console $console null
    
) {
        
$this->alias Str::kebab($alias);
        
$this->config $config;
        
$this->filesystem $filesystem;
        
$this->console $console;
        
$this->module $module;
    }

    
/**
     * Set plain flag.
     *
     * @param bool $plain
     *
     * @return $this
     */
    
public function setPlain($plain)
    {
        
$this->plain $plain;

        return 
$this;
    }

    
/**
     * Get the name of module will created. By default in studly case.
     *
     * @return string
     */
    
public function getName()
    {
        return 
Str::studly($this->alias);
    }

    
/**
     * Get the laravel config instance.
     *
     * @return Config
     */
    
public function getConfig()
    {
        return 
$this->config;
    }

    
/**
     * Set the laravel config instance.
     *
     * @param Config $config
     *
     * @return $this
     */
    
public function setConfig($config)
    {
        
$this->config $config;

        return 
$this;
    }

    
/**
     * Get the laravel filesystem instance.
     *
     * @return Filesystem
     */
    
public function getFilesystem()
    {
        return 
$this->filesystem;
    }

    
/**
     * Set the laravel filesystem instance.
     *
     * @param Filesystem $filesystem
     *
     * @return $this
     */
    
public function setFilesystem($filesystem)
    {
        
$this->filesystem $filesystem;

        return 
$this;
    }

    
/**
     * Get the laravel console instance.
     *
     * @return Console
     */
    
public function getConsole()
    {
        return 
$this->console;
    }

    
/**
     * Set the laravel console instance.
     *
     * @param Console $console
     *
     * @return $this
     */
    
public function setConsole($console)
    {
        
$this->console $console;

        return 
$this;
    }

    
/**
     * Get the module instance.
     *
     * @return \Akaunting\Module\Module
     */
    
public function getModule()
    {
        return 
$this->module;
    }

    
/**
     * Set the module instance.
     *
     * @param mixed $module
     *
     * @return $this
     */
    
public function setModule($module)
    {
        
$this->module $module;

        return 
$this;
    }

    
/**
     * Get the list of folders will created.
     *
     * @return array
     */
    
public function getFolders()
    {
        return 
$this->module->config('paths.generator');
    }

    
/**
     * Get the list of files will created.
     *
     * @return array
     */
    
public function getFiles()
    {
        return 
$this->module->config('stubs.files');
    }

    
/**
     * Set force status.
     *
     * @param bool|int $force
     *
     * @return $this
     */
    
public function setForce($force)
    {
        
$this->force $force;

        return 
$this;
    }

    
/**
     * Generate the module.
     */
    
public function generate()
    {
        if (
$this->module->has($this->alias)) {
            if (
$this->force) {
                
$this->module->delete($this->alias);
            } else {
                
$this->console->error("Module [{$this->alias}] already exist!");

                return;
            }
        }

        
$this->generateFolders();

        
$this->generateModuleJsonFile();

        if (
$this->plain !== true) {
            
$this->generateFiles();
            
$this->generateResources();
        }

        if (
$this->plain === true) {
            
$this->cleanModuleJsonFile();
        }

        
$this->console->info("Module [{$this->alias}] created successfully.");
    }

    
/**
     * Generate the folders.
     */
    
public function generateFolders()
    {
        foreach (
$this->getFolders() as $key => $folder) {
            
$folder GenerateConfigReader::read($key);

            if (
$folder->generate() === false) {
                continue;
            }

            
$path $this->module->getModulePath($this->getName()) . '/' $folder->getPath();

            
$this->filesystem->makeDirectory($path0755true);
            if (
config('module.stubs.gitkeep')) {
                
$this->generateGitKeep($path);
            }
        }
    }

    
/**
     * Generate git keep to the specified path.
     *
     * @param string $path
     */
    
public function generateGitKeep($path)
    {
        
$this->filesystem->put($path '/.gitkeep''');
    }

    
/**
     * Generate the files.
     */
    
public function generateFiles()
    {
        foreach (
$this->getFiles() as $stub => $file) {
            
$path $this->module->getModulePath($this->getName()) . $file;

            if (!
$this->filesystem->isDirectory($dir dirname($path))) {
                
$this->filesystem->makeDirectory($dir0775true);
            }

            
$this->filesystem->put($path$this->getStubContents($stub));

            
$this->console->info("Created : {$path}");
        }
    }

    
/**
     * Generate some resources.
     */
    
public function generateResources()
    {
        if (
GenerateConfigReader::read('seeder')->generate() === true) {
            
$this->console->call('module:make-seed', [
                
'name' => $this->getName(),
                
'alias' => $this->alias,
                
'--master' => true,
            ]);
        }

        if (
GenerateConfigReader::read('provider')->generate() === true) {
            
$this->console->call('module:make-provider', [
                
'name' => 'Main',
                
'alias' => $this->alias,
                
'--master' => true,
            ]);
        }

        if (
GenerateConfigReader::read('controller')->generate() === true) {
            
$this->console->call('module:make-controller', [
                
'controller' => 'Main',
                
'alias' => $this->alias,
            ]);
        }
    }

    
/**
     * Get the contents of the specified stub file by given stub name.
     *
     * @param $stub
     *
     * @return string
     */
    
protected function getStubContents($stub)
    {
        return (new 
Stub(
            
'/' $stub '.stub',
            
$this->getReplacement($stub)
        ))->
render();
    }

    
/**
     * get the list for the replacements.
     */
    
public function getReplacements()
    {
        return 
$this->module->config('stubs.replacements');
    }

    
/**
     * Get array replacement for the specified stub.
     *
     * @param $stub
     *
     * @return array
     */
    
protected function getReplacement($stub)
    {
        
$replacements $this->module->config('stubs.replacements');

        if (!isset(
$replacements[$stub])) {
            return [];
        }

        
$keys $replacements[$stub];

        
$replaces = [];

        foreach (
$keys as $key) {
            if (
method_exists($this$method 'get' ucfirst(Str::studly(strtolower($key))) . 'Replacement')) {
                
$replaces[$key] = $this->$method();
            } else {
                
$replaces[$key] = null;
            }
        }

        return 
$replaces;
    }

    
/**
     * Generate the module.json file
     */
    
private function generateModuleJsonFile()
    {
        
$path $this->module->getModulePath($this->alias) . 'module.json';

        if (!
$this->filesystem->isDirectory($dir dirname($path))) {
            
$this->filesystem->makeDirectory($dir0775true);
        }

        
$this->filesystem->put($path$this->getStubContents('json'));

        
$this->console->info("Created : {$path}");
    }

    
/**
     * Remove the default service provider that was added in the module.json file
     * This is needed when a --plain module was created
     */
    
private function cleanModuleJsonFile()
    {
        
$path $this->module->getModulePath($this->alias) . 'module.json';

        
$content $this->filesystem->get($path);
        
$namespace $this->getModuleNamespaceReplacement();
        
$studlyName $this->getStudlyNameReplacement();

        
$provider '"' $namespace '\\\\' $studlyName '\\\\Providers\\\\' $studlyName '"';

        
$content str_replace($provider''$content);

        
$this->filesystem->put($path$content);
    }

    
/**
     * Get the module alias.
     *
     * @return string
     */
    
protected function getAliasReplacement()
    {
        return 
$this->alias;
    }

    
/**
     * Get the module name in lower case.
     *
     * @return string
     */
    
protected function getLowerNameReplacement()
    {
        return 
$this->getAliasReplacement();
    }

    
/**
     * Get the module name in studly case.
     *
     * @return string
     */
    
protected function getStudlyNameReplacement()
    {
        return 
$this->getName();
    }

    
/**
     * Get replacement for $VENDOR$.
     *
     * @return string
     */
    
protected function getVendorReplacement()
    {
        return 
$this->module->config('composer.vendor');
    }

    
/**
     * Get replacement for $MODULE_NAMESPACE$.
     *
     * @return string
     */
    
protected function getModuleNamespaceReplacement()
    {
        return 
str_replace('\\''\\\\'$this->module->config('namespace'));
    }

    
/**
     * Get replacement for $AUTHOR_NAME$.
     *
     * @return string
     */
    
protected function getAuthorNameReplacement()
    {
        return 
$this->module->config('composer.author.name');
    }

    
/**
     * Get replacement for $AUTHOR_EMAIL$.
     *
     * @return string
     */
    
protected function getAuthorEmailReplacement()
    {
        return 
$this->module->config('composer.author.email');
    }
}

:: 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.0043 ]--