HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/work.naniguide.com/Modules/LanguagePack/Http/Controllers/LanguagePackController.php
<?php

namespace Modules\LanguagePack\Http\Controllers;

use App\Helper\Reply;
use App\Http\Controllers\AccountBaseController;
use App\Models\LanguageSetting;
use Illuminate\Support\Facades\File;
use Modules\LanguagePack\Http\Requests\PublishLanguageRequest;

class LanguagePackController extends AccountBaseController
{

    public function publishAll()
    {
        $languages = LanguageSetting::all();

        try {
            foreach ($languages as $language) {
                $this->publishLanguage($language->language_code);
            }
        } catch (\Throwable $th) {
            return Reply::error($th->getMessage());
        }

        return Reply::success(__('languagepack::messages.allLanguagePublished'));
    }

    public function publish(PublishLanguageRequest $request)
    {
        try {
            $this->publishLanguage($request->languageCode);
        } catch (\Throwable $th) {
            return Reply::error($th->getMessage());
        }
        return Reply::success(__('languagepack::messages.languagePublished'));
    }

    private function publishLanguage ($languageCode)
    {
        $path = lang_path($languageCode);

        if (File::isDirectory($path)) {
            File::deleteDirectory($path);
        }

        $sourcePath = languagePackPath($languageCode);

        if (File::isDirectory($sourcePath)) {
            File::copyDirectory($sourcePath, $path);
        }

        $modules = \Nwidart\Modules\Facades\Module::all();

        foreach ($modules as $moduleName => $module) {
            $this->publishModuleLanguage($moduleName, $languageCode);
        }
    }

    private function publishModuleLanguage ($module, $languageCode)
    {
        $path = module_path($module, 'Resources/lang/' . $languageCode);

        if (File::isDirectory($path)) {
            File::deleteDirectory($path);
        }

        $sourcePath = languagePackPath($languageCode, $module);

        if (File::isDirectory($sourcePath)) {
            File::copyDirectory($sourcePath, $path);
        }
    }

}