Файловый менеджер - Редактировать - /home/c7lekhnath/silverray.com.au/Modules/Language/database/seeders/68334/Controllers.tar
Назад
LanguageController.php 0000644 00000020557 15012274324 0011055 0 ustar 00 <?php namespace Modules\Language\app\Http\Controllers; use Exception; use App\Enums\RedirectType; use Illuminate\Http\JsonResponse; use App\Traits\RedirectHelperTrait; use Illuminate\Contracts\View\View; use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\File; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Artisan; use Modules\Language\app\Models\Language; use Modules\Language\app\Traits\LanguageTrait; use Modules\Language\app\Enums\RtlLanguagsEnum; use Modules\Language\app\Enums\SyncLanguageType; use Modules\Language\app\Traits\SyncModelsTrait; use Modules\Language\app\Enums\AllCountriesDetailsEnum; use Modules\Language\app\Http\Requests\LanguageRequest; class LanguageController extends Controller { use LanguageTrait, RedirectHelperTrait, SyncModelsTrait; public function index(): View { checkAdminHasPermissionAndThrowException('language.view'); Paginator::useBootstrap(); $languages = Language::paginate(15); return view('language::index', [ 'languages' => $languages, ]); } public function create(): View { checkAdminHasPermissionAndThrowException('language.create'); $existingCodes = Language::pluck('code')->toArray(); $all_languages = AllCountriesDetailsEnum::getLanguages(); $all_languages = $all_languages->reject(function ($language) use ($existingCodes) { return in_array($language->code, $existingCodes); }); return view('language::create', compact('all_languages')); } public function store(LanguageRequest $request): RedirectResponse { checkAdminHasPermissionAndThrowException('language.store'); $rtl_languages = RtlLanguagsEnum::rtlLanguages(); $validated_date = $request->validated(); $validated_date = array_merge([ 'direction' => in_array($request->code, $rtl_languages) ? 'rtl':'ltr', ], $validated_date); $language = Language::create($validated_date); if ($language) { $code = $language->code; $parentDir = dirname(app_path()); $sourcePath = $parentDir.'/lang/en.json'; $destinationPath = $parentDir."/lang/{$code}.json"; if (File::exists($sourcePath) && ! File::exists($destinationPath)) { $jsonData = File::get($sourcePath); File::put($destinationPath, $jsonData); } } $this->syncModels(SyncLanguageType::CREATE->value, boolval(SyncLanguageType::isQueueable()), $language->code); return $this->redirectWithMessage( RedirectType::CREATE->value, 'admin.languages.index', ); } public function edit(Language $language): View { checkAdminHasPermissionAndThrowException('language.edit'); $existingCodes = Language::whereNot('code',$language->code)->pluck('code')->toArray(); $all_languages = AllCountriesDetailsEnum::getLanguages(); $all_languages = $all_languages->reject(function ($language) use ($existingCodes) { return in_array($language->code, $existingCodes); }); return view('language::edit', compact('language', 'all_languages')); } public function update(LanguageRequest $request, Language $language): RedirectResponse { checkAdminHasPermissionAndThrowException('language.update'); $rtl_languages = RtlLanguagsEnum::rtlLanguages(); $validated_date = $request->validated(); $validated_date = array_merge([ 'direction' => in_array($request->code, $rtl_languages) ? 'rtl':'ltr', ], $validated_date); $oldCode = $language->code; $language->update($validated_date); $code = $language->code; if ($language && ($oldCode !== $code) && ($code !== 'en')) { $parentDir = dirname(app_path()); $sourcePath = $parentDir.'/lang/en.json'; $destinationPath = $parentDir."/lang/{$code}.json"; if (File::exists($sourcePath) && ! File::exists($destinationPath)) { $jsonData = File::get($sourcePath); File::put($destinationPath, $jsonData); } if ($oldCode !== $code && $code !== 'en') { $destinationPath = $parentDir."/lang/{$oldCode}.json"; try { File::delete($destinationPath); } catch (Exception $ex) { Log::error($ex->getMessage()); } } } $this->syncModels(SyncLanguageType::UPDATE->value, boolval(SyncLanguageType::isQueueable()), $language->code, $oldCode); return $this->redirectWithMessage( RedirectType::UPDATE->value, 'admin.languages.index', ); } public function destroy(Language $language): RedirectResponse { checkAdminHasPermissionAndThrowException('language.delete'); if ($language->id == 1) { return $this->redirectWithMessage( RedirectType::ERROR->value, 'admin.languages.index', ); } $code = $language->code; if ($code == app()->getLocale() || $code == 'en') { return $this->redirectWithMessage( RedirectType::ERROR->value, 'admin.languages.index', ); } if ($code !== 'en' && $deleted = $language->delete()) { $destinationPath = dirname(app_path())."/lang/{$code}.json"; File::delete($destinationPath); } if ($deleted) { $this->syncModels(SyncLanguageType::DELETE->value, boolval(SyncLanguageType::isQueueable()), $code); } sessionForgetLangChang(); return $this->redirectWithMessage( RedirectType::DELETE->value, 'admin.languages.index', ); } public function updateStatus(Language $language): JsonResponse { checkAdminHasPermissionAndThrowException('language.update'); if (request('column') == 'is_default') { if ( $language->status == 0 ) { return response()->json([ 'status' => false, 'message' => __('You can\'t set an inactive language as the default language'), ]); } if ( $language->is_default == 0 ) { Language::where('is_default', 1)->update(['is_default' => 0]); } if (Language::where('is_default', 1)->whereNot('id',$language->id)->count() == 0 && $language->is_default == 1) { Language::where( 'id', 1 )->update( ['is_default' => 1,'status' => 1] ); if($language->id != 1){ $language->is_default = 0; } }else{ $language->is_default = $language->is_default ? 0 : 1; } sessionForgetLangChang(); $this->menuCacheForget(); session()->put('lang', $language->code); session()->put('text_direction', $language->direction); } elseif (request('column') == 'status') { if ( $language->is_default == 1 ) { return response()->json([ 'status' => false, 'message' => __('You can\'t inactive the default language'), ]); } $language->status = $language->status ? 0 : 1; if (isset($language) && 0 == $language->status && session()->has('lang') && session()->get('lang') == $language->code) { sessionForgetLangChang(); $this->menuCacheForget(); } } $action = $language->save(); Artisan::call('cache:clear'); return response()->json([ 'status' => $action, 'message' => $action ? __('Language Updated Successfully!') : __('Language Updating Failed!'), ]); } public function menuCacheForget() { $sessionId = session()->getId(); $maniMenuKey = 'mainMenuGetBySlug_' . $sessionId; $footerMenuKey = 'footerMenuGetBySlug_' . $sessionId; $footerBottomMenuKey = 'footerBottomMenuGetBySlug_' . $sessionId; cache()->forget($maniMenuKey); cache()->forget($footerMenuKey); cache()->forget($footerBottomMenuKey); } } StaticLanguageController.php 0000644 00000006611 15012274324 0012220 0 ustar 00 <?php namespace Modules\Language\app\Http\Controllers; use App\Enums\RedirectType; use Illuminate\Http\Request; use App\Traits\RedirectHelperTrait; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Cache; use Modules\Language\app\Models\Language; use Modules\Language\app\Traits\LanguageTrait; use Illuminate\Pagination\LengthAwarePaginator; use Modules\GlobalSetting\app\Models\CustomPagination; use Illuminate\Support\Str; class StaticLanguageController extends Controller { use LanguageTrait, RedirectHelperTrait; public function editStaticLanguages(Request $request, $code) { checkAdminHasPermissionAndThrowException('language.edit'); $filePath = base_path('lang/'.$code.'.json'); if (! File::exists($filePath)) { return redirect()->route('admin.languages.index')->with([ 'alert-type' => 'warning', 'messege' => __('Not Found!'), ]); } $language = Language::where('code', $code)->firstOrFail(); $languages = Language::all(); $data = json_decode(File::get($filePath), true); if ($request->filled('search')) { $search = preg_quote($request->search, '/'); $search = str_replace(' ', '\s*', $search); $data = collect($data)->filter(function ($value, $key) use ($search) { return preg_match("/{$search}/i", $key) || preg_match("/{$search}/i", $value); })->all(); } $data = $this->collectionPagination($data); return view('language::edit-static-language', compact('data', 'language', 'languages')); } //Paginate language file array data private function collectionPagination($data){ if(Cache::has('CustomPagination')){ $CustomPagination = Cache::get('CustomPagination'); $perPage = $CustomPagination->language_list; } else { $perPage = CustomPagination::where('section_name', 'Language List')->select('item_qty')->first()->item_qty; } $currentPage = LengthAwarePaginator::resolveCurrentPage(); $dataCollection = collect( $data ); $currentPageItems = $dataCollection->slice( ( $currentPage - 1 ) * $perPage, $perPage )->all(); $paginationData = new LengthAwarePaginator($currentPageItems, $dataCollection->count(), $perPage, $currentPage, [ 'path' => LengthAwarePaginator::resolveCurrentPath(), ]); return $paginationData; } public function updateStaticLanguages(Request $request, $code) { checkAdminHasPermissionAndThrowException('language.update'); $this->updateLanguageFile($request,$code); return $this->redirectWithMessage(RedirectType::UPDATE->value); } //update paginate file data private function updateLanguageFile($request, $code){ $filePath = base_path('lang/'.$code.'.json'); if (! File::exists($filePath)) { return redirect()->route('admin.languages.index')->with([ 'alert-type' => 'warning', 'messege' => __('Not Found!'), ]); } $existingData = json_decode(File::get($filePath), true); foreach ( $request->values as $index => $value ) { $existingData[$index] = $value; } File::put($filePath, json_encode($existingData, JSON_PRETTY_PRINT)); } } TranslationController.php 0000644 00000010254 15012274324 0011621 0 ustar 00 <?php namespace Modules\Language\app\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; use Stichoza\GoogleTranslate\GoogleTranslate; class TranslationController extends Controller { public function translateAll(Request $request) { try { if (checkAdminHasPermission('language.translate')) { $filePath = base_path('lang/' . $request->code . '.json'); if (File::exists($filePath)) { $jsonData = json_decode(File::get($filePath), true); $keys = array_keys($jsonData); $values = array_values($jsonData); $delimiter = "\n\t"; $allText = implode($delimiter, $values); // Split the text into chunks $chunks = $this->splitIntoChunksWithDelimiter($allText, 5000, $delimiter); $translatedChunks = $this->translateChunks($chunks, $request->code); // Combine the translated chunks back into a single string $translatedText = implode($delimiter, $translatedChunks); $translatedValues = explode($delimiter, $translatedText); if (count($translatedValues) == count($keys)) { $translatedData = array_combine($keys, $translatedValues); // Save the translated JSON back to the file File::put($filePath, json_encode($translatedData, JSON_PRETTY_PRINT)); return response()->json([ 'success' => true, 'message' => __('All texts translated successfully!'), ]); } return response()->json([ 'success' => false, 'message' => __('Something went wrong while translating the file.'), ]); } return response()->json([ 'success' => false, 'message' => __('File Not Found!'), ], 404); } return response()->json([ 'success' => false, 'message' => __('Permission Denied!'), ], 403); } catch (\Exception $e) { logger($e); return response()->json([ 'success' => false, 'message' => __('An error occurred while translating the file.') . ' ' . $e->getMessage(), ], 500); } } private function splitIntoChunksWithDelimiter($text, $maxChunkSize, $delimiter) { $chunks = []; $textLength = strlen($text); $start = 0; while ($start < $textLength) { $end = $start + $maxChunkSize; if ($end >= $textLength) { $chunks[] = substr($text, $start); break; } // Find the last occurrence of the delimiter before the end point $end = strrpos(substr($text, $start, $maxChunkSize), $delimiter) + $start + strlen($delimiter); if ($end <= $start) { // If no delimiter is found, use the maxChunkSize as the end point $end = $start + $maxChunkSize; } $chunks[] = substr($text, $start, $end - $start); $start = $end; } return $chunks; } // translate chunks private function translateChunks($chunks, $lang_code) { $translatedChunks = []; foreach ($chunks as $chunk) { $tr = new GoogleTranslate($lang_code); $translatedData = $tr->translate($chunk); $translatedChunks[] = $translatedData; } return $translatedChunks; } public function translateSingleText(Request $request) { if (checkAdminHasPermission('language.single.translate')) { $tr = new GoogleTranslate($request->lang); $afterTrans = $tr->translate($request->text); return response()->json($afterTrans); } return response()->json(__('Permission Denied!'), 403); } } .gitkeep 0000644 00000000000 15012274324 0006163 0 ustar 00
| ver. 1.4 |
Github
|
.
| PHP 8.3.20 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка