diff --git a/action/creer_slug.php b/action/creer_slug.php index ea6a327..d1a0b57 100644 --- a/action/creer_slug.php +++ b/action/creer_slug.php @@ -32,7 +32,8 @@ function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){ ]; if ($id_slug = objet_inserer('gamumail', null, $set)) { - $set = ['slug' => _GAMUMAIL_PREFIX_SLUG .'_'.$id_slug]; + $slug = getSlugGamumail($id_slug); + $set = ['slug' => $slug]; sql_updateq('spip_gamumails', $set, 'id_gamumail = '.$id_slug); } } else { @@ -59,3 +60,16 @@ function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){ include_spip('inc/invalideur'); suivre_invalideur("id='id_gamumail/1'"); } + +function getSlugGamumail(int $id_gamumail, int|null $suffix = 0):string { + $slug = _GAMUMAIL_PREFIX_SLUG .'_'.$id_gamumail; + if ($suffix) { + $slug .= '_'.$suffix; + } + if (sql_countsel('spip_gamumails', ['slug='.sql_quote($slug)])) { + $suffix++; + return getSlugGamumail($id_gamumail, $suffix); + } + return $slug; +} +