gamuMail/action/creer_slug.php
tofulm 66ecc85ecb 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
2025-02-13 14:07:53 +01:00

75 lines
1.8 KiB
PHP

<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
defined('_GAMUMAIL_PREFIX_SLUG') || define('_GAMUMAIL_PREFIX_SLUG', "slug");
/**
* créer un slug Gamumail
*
* @plugin GamuMail
*
* @copyright 2020
* @author cy_altern
* @licence GNU/GPL
*
**/
function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){
include_spip('inc/autoriser');
include_spip('action/editer_objet');
if (!autoriser('creer','gamumail')) {
return false;
}
// Arrive d'une action SPIP
if ($slug === null) {
$set = [
'slug' => '',
'titre' => 'Le titre du modèle',
'sujet' => 'Le sujet du mail',
'texte' => 'Le texte du mail',
'statut' => 'publie',
'editable' => '',
];
if ($id_slug = objet_inserer('gamumail', null, $set)) {
$slug = getSlugGamumail($id_slug);
$set = ['slug' => $slug];
sql_updateq('spip_gamumails', $set, 'id_gamumail = '.$id_slug);
}
} else {
// Appel de la fonction via charger_fonction("creer_slug", 'action');
// Création d'un slug à l'installation d'un plugin
// remplacement d'un slug, il faut l'option $ecraser=true
$id_slug = sql_getfetsel('id_gamumail', 'spip_gamumails', 'slug='.sql_quote($slug));
if (
intval($id_slug)
and $ecraser
) {
sql_updateq('spip_gamumails', $opt, 'id_gamumail='.intval($id_slug));
}
// creation d'un nouveau slug
if (!intval($id_slug)) {
$opt['slug'] = $slug;
sql_insertq('spip_gamumails', $opt);
}
}
// Cache
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;
}