fix: on vérifie que le slug n'existe pas,

cela arrive si la creation du slug est déplacer dans un autre plugin
comme gformation
This commit is contained in:
Christophe 2025-02-13 14:07:53 +01:00
parent e60bb95f70
commit 66ecc85ecb

View file

@ -32,7 +32,8 @@ function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){
]; ];
if ($id_slug = objet_inserer('gamumail', null, $set)) { 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); sql_updateq('spip_gamumails', $set, 'id_gamumail = '.$id_slug);
} }
} else { } else {
@ -59,3 +60,16 @@ function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){
include_spip('inc/invalideur'); include_spip('inc/invalideur');
suivre_invalideur("id='id_gamumail/1'"); 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;
}