Merge branch 'fix-error' into 'develop'

chore: 🔖 release v7.1.1

See merge request ldc-web/projets/sitemap-generator!7
This commit is contained in:
Karl M'muller 2026-08-24 11:18:26 +00:00
commit 1f789eca23
4 changed files with 51 additions and 43 deletions

View file

@ -6,6 +6,10 @@ All notable changes to `sitemap-generator` will be documented in this file.
- This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
- Commits respect [Conventionnal commits](https://www.conventionalcommits.org/en/v1.0.0/) & use [Gitmoji](https://gitmoji.dev/).
## **[v7.1.1] - 24/08/2026**
- Improve error catch in `uwil:sitemap:refresh` command
## **[v7.1.0] - 23/06/2026**
- Added the possibility to get models with nullable relations.

View file

@ -58,7 +58,7 @@ If you discover any security related issues, please email <equipe.web@ldc.fr> in
# Changelog
Latest version v5.0.1.
Latest version v7.1.1.
See the [CHANGELOG.md](CHANGELOG.md) file for details.

View file

@ -1,7 +1,7 @@
{
"name": "uwil/sitemap-generator",
"description": "Create sitemap.xml",
"version": "7.1.0",
"version": "7.1.1",
"require": {
"illuminate/support": "~11|~12|~13",
"laravel/framework": "~11|~12|~13",

View file

@ -37,43 +37,43 @@ class GenerateSitemapCommand extends Command
{
$this->info('Generating Sitemap..');
$sitemap = Sitemap::create();
foreach (config('sitemap-generator.singlePages') as $page) {
foreach (config('sitemap-generator.supported_locales') as $locale) {
$sitemap->add(SitemapHelper::generateUrl(
SitemapHelper::getURLFromRouteNameTranslated($locale, $page),
getAlternate: fn ($locale) => SitemapHelper::getURLFromRouteNameTranslated($locale, $page)
));
}
}
foreach (config('sitemap-generator.cruds') as $crud) {
$modelFilters = $crud['modelFilters'] ?? [];
$relationsFilters = $crud['relationFilters'] ?? [];
$allowNullRelations = $crud['allowNullRelations'] ?? [];
$query = $crud['model']::query()
->when($modelFilters, function (Builder $q) use ($modelFilters) {
$q->where($modelFilters);
});
if (! empty($relationsFilters)) {
$query->where(function (Builder $q) use ($relationsFilters, $allowNullRelations) {
foreach ($relationsFilters as $relation => $filter) {
if (in_array($relation, $allowNullRelations, true)) {
$q->whereDoesntHave($relation)
->orWhereHas($relation, $filter);
} else {
$q->whereHas($relation, $filter);
}
}
});
}
$sitemap->add($query->get());
}
try {
$sitemap = Sitemap::create();
foreach (config('sitemap-generator.singlePages') as $page) {
foreach (config('sitemap-generator.supported_locales') as $locale) {
$sitemap->add(SitemapHelper::generateUrl(
SitemapHelper::getURLFromRouteNameTranslated($locale, $page),
getAlternate: fn($locale) => SitemapHelper::getURLFromRouteNameTranslated($locale, $page)
));
}
}
foreach (config('sitemap-generator.cruds') as $crud) {
$modelFilters = $crud['modelFilters'] ?? [];
$relationsFilters = $crud['relationFilters'] ?? [];
$allowNullRelations = $crud['allowNullRelations'] ?? [];
$query = $crud['model']::query()
->when($modelFilters, function (Builder $q) use ($modelFilters) {
$q->where($modelFilters);
});
if (! empty($relationsFilters)) {
$query->where(function (Builder $q) use ($relationsFilters, $allowNullRelations) {
foreach ($relationsFilters as $relation => $filter) {
if (in_array($relation, $allowNullRelations, true)) {
$q->whereDoesntHave($relation)
->orWhereHas($relation, $filter);
} else {
$q->whereHas($relation, $filter);
}
}
});
}
$sitemap->add($query->get());
}
if ($this->option('dry-run')) {
$this->renderTable($sitemap);
return 0;
@ -86,13 +86,17 @@ class GenerateSitemapCommand extends Command
}
$sitemap->writeToFile($dest);
} catch (SitemapException $e) {
$this->error('An error occured while generating sitemap');
} catch (\Throwable $e) {
if ($e instanceof SitemapException) {
$this->error('Sitemap generation error');
} else {
$this->error('Unexpected error while generating sitemap');
}
$this->error($e->getMessage());
\report($e);
if (config('app.debug')) {
dump($e);
}
return 1;
} //end try
$this->info('A new sitemap.xml was generated');