KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64
User : www-data ( 33)
PHP Version : 8.2.12
Disable Function : NONE
Directory :  /var/www/account.appointkrypt.com/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/account.appointkrypt.com/app/Http/Controllers/LanguageController.php
<?php

namespace App\Http\Controllers;

use App\Models\AddOn;
use App\Models\EmailTemplateLang;
use App\Models\Language;
use App\Models\Setting;
use App\Models\User;
use Exception;
use Illuminate\Http\Request;
use Nwidart\Modules\Facades\Module;
use Illuminate\Filesystem\Filesystem;


class LanguageController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index($lang = 'en',$module='general')
    {
        if($lang){
            $user = \Auth::user();
            if($user->isAbleTo('language manage') )
            {
                if($module == 'general' ){
                    $dir = base_path() . '/resources/lang/' . $lang;
                }else{
                    $module = AddOn::where('name',$module)->first();
                    if($module)
                    {
                        $module= $module->module;
                        $this_module = Module::find($module);
                        $path =   $this_module->getPath();
                        $dir = $path.'/Resources/lang/' . $lang;
                    }else{
                        return redirect()->back()->with('error', __('Please active this module.'));
                    }
                }
                try{
                    if(file_exists($dir . '.json'))
                    {
                        $arrLabel = json_decode(file_get_contents($dir . '.json'));
                    }else{
                        return redirect()->back()->with('error', __('Permission denied.'));
                    }

                    $arrFiles   = array_diff(
                        scandir($dir), array(
                                        '..',
                                        '.',
                                    )
                    );
                    $arrMessage = [];
                    foreach($arrFiles as $file)
                    {
                        $fileName = basename($file, ".php");
                        $fileData = $myArray = include $dir . "/" . $file;
                        if(is_array($fileData))
                        {
                            $arrMessage[$fileName] = $fileData;
                        }
                    }
                    $langs = Language::where('code',$lang)->first();
                    $languages = Language::get()->pluck('name','code')->toArray();
                }catch(Exception $e){

                    return redirect()->back()->with('error',str_replace( array( '\'', '"', '`','{',"\n"), ' ', $e->getMessage()));
                }
                return view('lang.index', compact('user', 'lang', 'arrLabel', 'arrMessage','module','langs','languages'));
            }
            else
            {
                return redirect()->back()->with('error', __('Permission denied.'));
            }
        }else
        {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        if(\Auth::user()->isAbleTo('language create'))
        {
            return view('lang.create');
        }
        else
        {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }


    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if(\Auth::user()->isAbleTo('language create'))
        {
            $languageExist = Language::where('code',$request->code)->orWhere('name',$request->fullname)->first();
            if(empty($languageExist)){
                $language = new Language();
                $language->code = strtolower($request->code);
                $language->name = ucfirst($request->fullname);
                $language->save();
            }else{

                return redirect()->route('lang.index', $request->code)->with('error', __('Language already Created!'));
            }
            try{

                $Filesystem = new Filesystem();
                $langCode   = strtolower($request->code);
                $langDir    = base_path() . '/resources/lang/';
                $dir        = $langDir;

                if(!is_dir($dir))
                {
                    mkdir($dir);
                    chmod($dir, 0777);
                }

                $dir      = $dir . '/' . $langCode;
                $jsonFile = $dir . ".json";
                if(file_exists($langDir . 'en.json'))
                {
                    \File::copy($langDir . 'en.json', $jsonFile);
                    chmod($jsonFile, 0777);
                }
                if(!is_dir($dir))
                {
                    mkdir($dir);
                    chmod($dir, 0777);
                }
                $Filesystem->copyDirectory($langDir . "en", $dir . "/");

                $modules = Module::all();
                if($modules){
                    foreach($modules as $module)
                    {
                        $path       = $module->getPath();
                        $Filesystem = new Filesystem();
                        $langCode   = strtolower($request->code);
                        $path       = $module->getPath();
                        $langDir    = $path.'/Resources/lang/';
                        $dir        = $langDir;
                        if(!is_dir($dir))
                        {
                            mkdir($dir);
                            chmod($dir, 0777);
                        }
                        $dir      = $dir . $langCode;

                        $jsonFile = $dir . ".json";

                        if(file_exists($langDir . 'en.json'))
                        {
                            \File::copy($langDir . 'en.json', $jsonFile);
                            chmod($jsonFile, 0777);

                        }
                        if(!is_dir($dir))
                        {
                            mkdir($dir);
                            chmod($dir, 0777);
                        }

                        $Filesystem->copyDirectory($langDir . "en", $dir . "/");
                    }
                }
                // make entry in email_tempalte_lang table for email template content
                // makeEmailLang($langCode);
            }catch(Exception $e)
            {
                return redirect()->back()->with('error',str_replace( array( '\'', '"', '`','{',"\n"), ' ', $e->getMessage()));
            }

            return redirect()->route('lang.index', $langCode)->with('success', __('Language Created Successfully!'));
        }
        else
        {
            return redirect()->back()->with('error', __('Permission denied.'));
        }

    }

    /**
     * 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)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($lang)
    {
        if(\Auth::user()->isAbleTo('language delete'))
        {
            $usr = \Auth::user();
            if($usr->type == 'super admin')
            {
                $default_lang = $usr->lang;

                // Remove Email Template Language
                EmailTemplateLang::where('lang', 'LIKE', $lang)->delete();

                $langDir = base_path() . '/resources/lang/';
                if(is_dir($langDir))
                {
                    // remove directory and file
                    delete_directory($langDir . $lang);
                    if(file_exists($langDir . $lang . '.json'))
                    {
                        unlink($langDir . $lang . '.json');
                    }
                }

                $modules = Module::all();
                if($modules){
                    foreach($modules as $module)
                    {
                        $path       = $module->getPath();
                        $langDir    = $path.'/Resources/lang/';
                        if(is_dir($langDir))
                        {
                            // remove directory and file
                            delete_directory($langDir . $lang);
                            if(file_exists($langDir . $lang . '.json'))
                            {
                                unlink($langDir . $lang . '.json');
                            }
                        }
                    }
                }
                 // update user that has assign deleted language.
                User::where('lang', 'LIKE', $lang)->update(['lang' => $default_lang]);
                Language::where('code',$lang)->first()->delete();

                return redirect()->route('lang.index', $default_lang)->with('success', __('Language Deleted Successfully!'));
            }
            else
            {
                return redirect()->back()->with('error', __('Permission Denied.'));
            }
        }
        else
        {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    public function storeData(Request $request, $lang,$module ='general' )
    {
        
        $user = \Auth::user();
        if($user->isAbleTo('language manage')){
            if($module == 'general' ){
                $dir = base_path() . '/resources/lang/';
            }else{
                $modules = AddOn::where('name',$module)->first();
                if(!empty($modules))
                {
                    $this_module = Module::find($modules->module);
                    $path =   $this_module->getPath();
                    $dir = $path.'/Resources/lang/';
                }else{
                    return redirect()->back()->with('error', __('Please active this module.'));
                }

            }
            try{

                if(!is_dir($dir))
                {
                    mkdir($dir);
                    chmod($dir, 0777);
                }
                $jsonFile = $dir . "/" . $lang . ".json";

                file_put_contents($jsonFile, json_encode($request->label));

                $langFolder = $dir . "/" . $lang;
                if(!is_dir($langFolder))
                {
                    mkdir($langFolder);
                    chmod($langFolder, 0777);
                }
                if($module == 'general' || $module == ''){
                    foreach($request->message as $fileName => $fileData)
                    {
                        $content = "<?php return [";
                        $content .= $this->buildArray($fileData);
                        $content .= "];";
                        file_put_contents($langFolder . "/" . $fileName . '.php', $content);
                    }
                }
            }catch(Exception $e){
                return redirect()->back()->with('error',$e->getMessage());
            }
            return redirect()->route('lang.index', [$lang,$module])->with('success', __('Language save successfully'));
        }
        else
        {
            return redirect()->back()->with('error', __('Permission denied.'));
        }
    }

    public function buildArray($fileData)
    {
        $content = "";
        foreach($fileData as $lable => $data)
        {
            if(is_array($data))
            {
                $content .= "'$lable'=>[" . $this->buildArray($data) . "],";
            }
            else
            {
                $content .= "'$lable'=>'" . addslashes($data) . "',";
            }
        }

        return $content;
    }

    public function changeLang($lang)
    {
        // Define the data to be updated or inserted
        $data = [
            'key' => 'site_rtl',
            'business' => getActiveBusiness(),
            'created_by' => \Auth::user()->id,
        ];
        if($lang == "ar" || $lang == "he")
        {
             // Check if the record exists, and update or insert accordingly
            Setting::updateOrInsert($data, ['value' => 'on']);
        }
        else
        {
             // Check if the record exists, and update or insert accordingly
            Setting::updateOrInsert($data, ['value' => 'off']);
        }
        // Settings Cache forget
        AdminSettingCacheForget();
        comapnySettingCacheForget();
        sideMenuCacheForget();
        $user       = \Auth::user();
        $user->lang = $lang;
        $user->save();
        return redirect()->back()->with('success', __('Language Change Successfully!'));
    }

    public function disableLang(Request $request)
    {
        if(\Auth::user()->isAbleTo('language manage'))
        {
            if($request->has('mode') && $request->lang){
                $lang = Language::where('code',$request->lang)->first();
                $lang->status = $request->mode;
                $lang->save();
            }
            if($request->mode == 0){
                $data['message'] = __('Language Disabled Successfully');
                $data['status'] = 200;
                return $data;
            }
            else
            {
                $data['message'] = __('Language Enabled Successfully');
                $data['status'] = 200;
                return $data;
            }
        }
    }

}

Anon7 - 2021