File: D:/HostingSpaces/SBogers10/sdo-schoonmaak.komma.pro/app/KommaApp/Languages/LanguageService.php
<?php
namespace App\KommaApp\Languages;
use App\KommaApp\Languages\Models\Language;
use App\KommaApp\Kms\Core\AbstractTranslatableModel;
use App\KommaApp\Pages\Models\Page;
use App\KommaApp\Routes\Models\Route;
/**
* Can fill some models with their respective translation models.
* And in the future will be able to set and change the users site language
*
* Class LanguageService
* @package App\KommaApp\Core
*/
class LanguageService
{
/**
* @param Page $page
* @param AbstractTranslatableModel|null $model
* @return object
*/
public function getOtherLanguagesRoutes(Page $page, AbstractTranslatableModel $model = null)
{
// Load route because we want to use the route column to get all related routes
$page->load('translation.route');
$languageSwitch = [];
$availableTranslationIds = [];
// First inject language route on available site languages into the language switch
foreach (\App::getSite()->languages as $language)
{
$alias = '';
if($language->id == \App::getSite()->default_language_id) $alias = '';
else $alias = $language->iso_2;
$languageSwitch[$language->id] = (object)[
'iso' => $language->iso_2,
'route' => $alias
];
$availableTranslationIds[] = $language->id;
}
// Then inject page route
$pageTranslationRoutes = Route::where('route', $page->translation->route->route)
->whereIn('language_id', $availableTranslationIds)
->get();
foreach ($pageTranslationRoutes as $translationRoute)
{
// Inject the page translation
$languageSwitch[$translationRoute->language_id]->route = $translationRoute->alias;
// Then check if there is model defined
if(isset($model)){
// If that model has a translation of this current loop, append it to the route
$modelLanguage = $model->translations->where('language_id', '=', $translationRoute->language_id)->first();
debug($modelLanguage);
if(isset($modelLanguage)) $languageSwitch[$translationRoute->language_id]->route .= '/' . $modelLanguage->slug;
}
}
return $languageSwitch;
}
}