You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.3 KiB
PHP
94 lines
3.3 KiB
PHP
<?php
|
|
/**
|
|
* Gestion du formulaire de vidage d'une typologie de plugin
|
|
* (liste des types ou liste des affectations type-plugin).
|
|
*/
|
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Chargement des données : le formulaire sert à vider les types de plugin ou leurs affacteations. Il est donc
|
|
* nécessaire de construire les libellés des cases à cocher idoines.
|
|
* Le choix des affectations est toujours proposé mais pas celui des types de plugin qui ne peuvent être supprimés
|
|
* que si aucune affectation n'existe.
|
|
*
|
|
* @param string $typologie Typologie de plugin concernée. Prend les valeurs `categorie`, `tag`...
|
|
*
|
|
* @return array Tableau des données à charger par le formulaire :
|
|
* - `_label_liste` : (affichage) choix d'exportation entre les types de plugin ou leurs affectations.
|
|
* - `_label_affectation` : (affichage) indique que des affectations existent pour la typologie.
|
|
* - `_nb_affectations` : (affichage) permet d'afficher ou de masquer le choix des types de plugin en JS
|
|
*/
|
|
function formulaires_vider_typologie_charger(string $typologie) : array {
|
|
// Initialisation du tableau des variables fournies au formulaire.
|
|
$valeurs = [];
|
|
|
|
// Labels et explication des choix.
|
|
$valeurs['_label_liste'] = _T("svptype:{$typologie}_vidage_liste_label");
|
|
$valeurs['_label_affectation'] = _T("svptype:{$typologie}_vidage_affectation_label");
|
|
|
|
// Autoriser le vidage des types de plugin :
|
|
// - si aucune affectation.
|
|
// - si on demande de vider les affectations
|
|
|
|
// Déterminer l'id du groupe pour la typologie concernée.
|
|
include_spip('inc/config');
|
|
$id_groupe = lire_config("svptype/typologies/{$typologie}/id_groupe", 0);
|
|
|
|
// Compter les affectations
|
|
$valeurs['_nb_affectations'] = sql_countsel(
|
|
'spip_plugins_typologies',
|
|
[
|
|
'id_groupe=' . $id_groupe
|
|
]
|
|
);
|
|
|
|
return $valeurs;
|
|
}
|
|
|
|
/**
|
|
* Exécution du formulaire : vidage des affectations et/ou des types de plugins (dans cet ordre si les deux sont
|
|
* sélectionnés).
|
|
*
|
|
* @param string $typologie Typologie de plugin concernée. Prend les valeurs `categorie`, `tag`...
|
|
*
|
|
* @return array Tableau retourné par le formulaire contenant toujours un message de bonne exécution ou
|
|
* d'erreur. L'indicateur editable est toujours à vrai.
|
|
*/
|
|
function formulaires_vider_typologie_traiter(string $typologie) : array {
|
|
// Initialisation du retour de traitement du formulaire (message, editable).
|
|
$retour = [];
|
|
|
|
// Récupération des saisies
|
|
$vider_affectation = _request('vidage_affectation');
|
|
$vider_liste = _request('vidage_liste');
|
|
|
|
// Vérifier qu'un choix a été fait
|
|
if (
|
|
!$vider_affectation
|
|
and !$vider_liste
|
|
) {
|
|
$retour['message_erreur'] = _T('svptype:vidage_message_nok');
|
|
} else {
|
|
// On vide en premier les affectations qui elles peuvent toujours être supprimées sans dommage.
|
|
include_spip('inc/svptype_typologie');
|
|
if ($vider_affectation) {
|
|
typologie_plugin_vider($typologie, 'affectation');
|
|
}
|
|
|
|
// On vide les types de plugin qui ne peuvent être supprimés que si il n'existe aucune affectation.
|
|
// -- la vérification a été faite via l'ergonomie du formulaire
|
|
if ($vider_liste) {
|
|
typologie_plugin_vider($typologie, 'liste');
|
|
}
|
|
|
|
$retour['message_ok'] = _T('svptype:vidage_message_ok');
|
|
}
|
|
|
|
// Retour du formulaire : on reste sur la page de maintenance.
|
|
$retour['editable'] = true;
|
|
|
|
return $retour;
|
|
}
|