File: D:/HostingSpaces/farmfun/reserveren.farmfun.be/app/Komma/Pages/Kms/PageRouteService.php
<?php
declare(strict_types=1);
namespace App\Komma\Pages\Kms;
use App\Komma\Pages\Models\Page;
use App\Komma\Pages\Models\PageTranslation;
use App\Komma\Routes\RedirectRouteModelInterface;
use App\Komma\Routes\RouteService;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;
class PageRouteService extends RouteService
{
/**
* Creates or updates routes for the specified Page's translations if needed.
* Important to know is that you need to run this method after the translation has been saved.
*
* @param Model $model
* @param int $redirectCode one of the HTTPStatusCode_308 constants from RedirectRouteModelInterface. Defaults to RedirectRouteModelInterface::HTTPStatusCode_308
* @return Model $model
*/
public function createOrUpdateRoutesForModelsTranslationsIfChanged(Model $model, int $redirectCode = RedirectRouteModelInterface::HTTPStatusCode_308): Model
{
/** @var Page $model */
$model = parent::createOrUpdateRoutesForModelsTranslationsIfChanged($model, $redirectCode);
$model->translations->each(function (PageTranslation $pageTranslation) use ($model) {
if (! $pageTranslation->route) {
return;
}
$route = $pageTranslation->route;
if ($model->has_wildcard) {
// Makes sure that existing wildcards don't get overruled
if (Str::startsWith($route->route, 'pages/') && ! Str::startsWith($model->code_name, 'locations.')) {
$route->route = $model->code_name;
}
} else {
$route->route = $this->generateRealRouteForModel($model);
}
$route->save();
});
return $model;
}
}