@ -267,23 +267,6 @@ function motsar_formulaire_fond_avec_querypath($flux) {
**/
function motsar_pre_insertion($flux) {
// Lors de la création d'un mot
if ($flux['args']['table'] == 'spip_mots') {
// On teste l'id_parent qui est soit :
// - posté car le pipeline est appelé via le formulaire d'édition
// - passé dans le flux car le pipeline est appelé via la fonction mot_inserer sans passer par le formulaire.
if (($id_parent = _request('id_parent'))
or (isset($flux['data']['id_parent']) and ($id_parent = $flux['data']['id_parent']))) {
$parent = sql_fetsel('id_mot_racine, profondeur', 'spip_mots', 'id_mot=' . sql_quote($id_parent));
// si et seulement si le parent demandé existe
if ($parent) {
$flux['data']['id_parent'] = $id_parent;
$flux['data']['id_mot_racine'] = $parent['id_mot_racine'];
$flux['data']['profondeur'] = $parent['profondeur'] + 1;
}
}
}
// Lors de la création d'un groupe de mot
if ($flux['args']['table'] == 'spip_groupes_mots') {
// On teste l'option mots arborescents soit dans les variables postées soit dans le flux.
@ -292,6 +275,7 @@ function motsar_pre_insertion($flux) {
$flux['data']['mots_arborescents'] = $mots_arborescents;
}
}
return $flux;
}
@ -310,17 +294,6 @@ function motsar_pre_insertion($flux) {
* Données du pipeline complétées
**/
function motsar_post_insertion($flux) {
// lors de la création d'un groupe
if ($flux['args']['table'] == 'spip_mots') {
$id_mot = $flux['args']['id_objet'];
// si le mot est à la racine,
// c'est a dire que 'id_mot_racine' n'est pas défini ou nul
// c'est que nous avons créé un mot racine. Il faut mettre
// id_mot_racine sur id_mot, maintenant qu'on le connait.
if (empty($flux['data']['id_mot_racine'])) {
sql_updateq('spip_mots', array('id_mot_racine' => $id_mot), 'id_mot=' . sql_quote($id_mot));
}
}
return $flux;
}
@ -342,68 +315,19 @@ function motsar_post_insertion($flux) {
* Données du pipeline complétées
**/
function motsar_pre_edition($flux) {
// lors de l'édition d'un mot
$table = 'spip_mots';
if ($flux['args']['table'] == $table
and $flux['args']['action'] == 'modifier')
{
$id_mot = $flux['args']['id_objet'];
$ancien = sql_fetsel(array('id_groupe', 'id_parent'), $table, 'id_mot=' . sql_quote($id_mot));
$id_parent_ancien = $ancien['id_parent'];
$id_parent_nouveau = _request('id_parent');
// uniquement s'ils sont différents
if ($id_parent_ancien != $id_parent_nouveau
// que le nouveau parent n'est pas notre groupe !
and $id_mot != $id_parent_nouveau
// et que le mot parent n'est pas un de nos enfants
and include_spip('motsar_fonctions') // calcul_branche_mot_in
and !in_array($id_parent_nouveau, explode(',', calcul_branche_mot_in($id_mot)))
) {
$id_racine = '';
$profondeur = 0;
// soit c'est la racine
if (!$id_parent_nouveau) {
// auquel cas l'identifiant racine est le meme que notre mot, qui migre à la racine
$id_racine = $id_mot;
// soit le groupe existe
} else {
$parent = sql_fetsel(array('profondeur', 'id_mot_racine'), $table, 'id_mot=' . sql_quote($id_parent_nouveau));
if ($parent) {
$id_racine = $parent['id_mot_racine'];
$profondeur = $parent['profondeur'] + 1;
}
}
if ($id_racine) {
$flux['data']['id_parent'] = $id_parent_nouveau;
$flux['data']['id_mot_racine'] = $id_racine;
$flux['data']['profondeur'] = $profondeur;
// pour le pipeline de post_edition. Permet entre autre de savoir
// qu'il faudra actualiser les mots de la branche
set_request('motsar_definir_heritages', true);
}
}
$id_groupe_ancien = $ancien['id_groupe'];
$id_groupe_nouveau = _request('id_groupe');
if ($id_groupe_ancien != $id_groupe_nouveau) {
// pour le pipeline de post_edition. Permet entre autre de savoir
// qu'il faudra actualiser tout le groupe
set_request('motsar_definir_heritages_groupe', $id_groupe_nouveau);
}
}
// lors de l'édition d'un groupe de mot
if ($flux['args']['table'] == 'spip_groupes_mots'
and $flux['args']['action'] == 'modifier')
{
$id_groupe = $flux['args']['id_objet'];
if ($mots_arborescents = _request('mots_arborescents')) {
$mots_arborescents_ancien = sql_getfetsel('mots_arborescents', 'spip_groupes_mots', 'id_groupe=' . sql_quote($flux['args']['id_objet'] ));
$mots_arborescents_ancien = sql_getfetsel('mots_arborescents', 'spip_groupes_mots', 'id_groupe=' . intval($id_groupe));
$flux['data']['mots_arborescents'] = $mots_arborescents;
if ($mots_arborescents_ancien != $mots_arborescents) {
// pour le pipeline de post_edition. Permet entre autre de savoir
// qu'il faudra actualiser les mots de la branche
set_request('motsar_definir_heritages', tru e);
set_request('motsar_definir_heritages', $id_groupe);
}
}
}
@ -430,38 +354,11 @@ function motsar_post_edition($flux) {
return $flux;
}
// lors de l'édition d'un mot
if ($flux['args']['table'] == 'spip_mots' and $flux['args']['action'] == 'modifier') {
$id_mot = $flux['args']['id_objet'];
// soit le parent a change, soit le mot racine est modifie
if (_request('motsar_definir_heritages') OR empty($flux['data']['id_parent'])) {
include_spip('motsar_fonctions');
motsar_definir_heritages_mot($id_mot);
propager_les_mots_arborescents();
}
}
// lors de l'institution d'un mot (définition du groupe de mot)
elseif ($flux['args']['table'] == 'spip_mots' and $flux['args']['action'] == 'instituer') {
// si le groupe de mot d'appartenance a changé
if ($id_groupe = _request('motsar_definir_heritages_groupe')) {
$id_mot = $flux['args']['id_objet'];
include_spip('motsar_fonctions');
// redifinir les id_groupe de tous ses enfants
motsar_definir_heritages_mot($id_mot);
// peut être applatir les enfants, si le groupe n'autorise pas les mots arborescents
motsar_definir_heritages($id_groupe);
// recalculer les profondeurs et racines…
propager_les_mots_arborescents();
}
}
// lors de l'édition d'un groupe de mot
else if ($flux['args']['table'] == 'spip_groupes_mots' and $flux['args']['action'] == 'modifier'
if ($flux['args']['table'] == 'spip_groupes_mots'
// si la configuration mots_arborescents a été modifiée
and _request('motsar_definir_heritages'))
{
and _request('motsar_definir_heritages') == $flux['args']['id_objet']) {
$id_groupe = $flux['args']['id_objet'];
include_spip('motsar_fonctions');
motsar_definir_heritages($id_groupe);