Changeset 48471 in spip-zone


Ignore:
Timestamp:
Jun 3, 2011, 9:16:16 PM (10 years ago)
Author:
jeannolapin@…
Message:

Associaspip Creation d'une fonction traiter pour le formulaire de configuration du plugin ce qui permet d'imposer plus proprement les modifications de configuration qui sont ignoreés et celles propagées a la table spip_asso_comptes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/Association/Associaspip/formulaires/configurer_association.php

    r48469 r48471  
    2020        $activites = _request('activites');
    2121        $comptes = _request('comptes');
    22         /* ignorer les changements fait dans un module non active. Le mieux serait de traiter ca dans la fonction traiter. A faire */
    23         if (!$comptes) {
    24                 set_request('pc_cotisations', $GLOBALS['association_metas']['pc_cotisations']);
    25                 set_request('dc_cotisations', $GLOBALS['association_metas']['dc_cotisations']);
    26                 set_request('destinations', '');
    27         }
    28 
    29         if (!$dons) {
    30                 set_request('pc_dons', $GLOBALS['association_metas']['pc_dons']);
    31                 set_request('dc_dons', $GLOBALS['association_metas']['dc_dons']);
    32         }
    33        
    34         if (!$ventes) {
    35                 set_request('pc_ventes', $GLOBALS['association_metas']['pc_ventes']);
    36                 set_request('pc_frais_envoi', $GLOBALS['association_metas']['pc_frais_envoi']);
    37                 set_request('dc_ventes', $GLOBALS['association_metas']['dc_ventes']);
    38         }
    39 
    40         if (!$prets) {
    41                 set_request('pc_prets', $GLOBALS['association_metas']['pc_prets']);
    42         }
    43 
    44         if (!$activites) {
    45                 set_request('pc_activites', $GLOBALS['association_metas']['pc_activites']);
    46         }
    4722
    4823        $pc_cotisations = _request('pc_cotisations');
     
    5530
    5631        // si la gestion comptable est activee, on valide le plan comptable
     32        $ref_attribuee = array();
    5733        if ($comptes) {
    5834                include_spip('inc/association_comptabilite');
     
    6339
    6440                // on verifie qu'il n'a pas deux fois la meme reference comptable en incluant celle des cotisations ou qu'on n'a pas attribue aux cotisations ou modules de gestion une reference comptable de la classe des comptes financiers
    65                 $ref_attribuee = array();
    6641                $classe_financier = _request('classe_banques');
    6742                $ref_attribuee[$pc_cotisations]='pc_cotisations';
     
    145120
    146121        if (count($erreurs)==1) { /* si on n'a qu'un entree dans la table des erreurs, c'est le titre qu'on a mis au debut, on n'a pas d'erreur, on renvoie un tableau vide */
    147                 /* vilain hack pour conserver la fonction traiter des metas : on fait potentiellement ici des modifs dans la table */
    148                 /* A-t-on modifie les metas pc_XXX si oui il faut faire suivre dans la table des comptes la modif, sinon on perd toutes les operations deja enregistrees */
    149                 if ($GLOBALS['association_metas']['pc_cotisations'] && ($pc_cotisations != $GLOBALS['association_metas']['pc_cotisations'])) {
    150                         sql_updateq('spip_asso_comptes', array('imputation' => $pc_cotisations), "imputation=".$GLOBALS['association_metas']['pc_cotisations']);
    151                 }
    152 
    153                 if ($GLOBALS['association_metas']['dons'] && $GLOBALS['association_metas']['pc_dons'] && ($pc_dons != $GLOBALS['association_metas']['pc_dons'])) {
    154                         sql_updateq('spip_asso_comptes', array('imputation' => $pc_dons), "imputation=".$GLOBALS['association_metas']['pc_dons']);
    155                 }
    156 
    157                 if ($GLOBALS['association_metas']['ventes'] && $GLOBALS['association_metas']['pc_ventes'] && ($pc_ventes != $GLOBALS['association_metas']['pc_ventes'])) {
    158                         sql_updateq('spip_asso_comptes', array('imputation' => $pc_ventes), "imputation=".$GLOBALS['association_metas']['pc_ventes']);
    159                 }
    160 
    161                 if ($GLOBALS['association_metas']['ventes'] && $GLOBALS['association_metas']['pc_frais_envoi'] && ($pc_frais_envoi != $GLOBALS['association_metas']['pc_frais_envoi'])) {
    162                         sql_updateq('spip_asso_comptes', array('imputation' => $pc_frais_envoi), "imputation=".$GLOBALS['association_metas']['pc_frais_envoi']);
    163                 }
    164 
    165                 if ($GLOBALS['association_metas']['prets'] && $GLOBALS['association_metas']['pc_prets'] && ($pc_prets != $GLOBALS['association_metas']['pc_prets'])) {
    166                         sql_updateq('spip_asso_comptes', array('imputation' => $pc_prets), "imputation=".$GLOBALS['association_metas']['pc_prets']);
    167                 }
    168 
    169                 if ($GLOBALS['association_metas']['activites'] && $GLOBALS['association_metas']['pc_activites'] && ($pc_ != $GLOBALS['association_metas']['pc_activites'])) {
    170                         sql_updateq('spip_asso_comptes', array('imputation' => $pc_activites), "imputation=".$GLOBALS['association_metas']['pc_activites']);
    171                 }
    172                 /* fin du vilain hack, le mieux serait encore de faire une fonction traiter pour y mettre ce code mais il faudrait alors reprendre les fonction de traiter depuis configurer_metas */
    173122                return array();
    174123        }
    175124
    176         /* on a des erreurs, pour conserver l'etat des checkbox vides, il faut faire un set_request en mettant une valeur differente de on sinon le retour de verif mange les eventuelles modifs */
     125        /* on a des erreurs, pour conserver l'etat des checkbox vides, il faut faire un set_request en mettant une valeur differente de 'on' sinon le retour de verif mange les eventuelles modifs */
    177126        if (!$comptes) set_request('comptes', 'off');
    178127        if (!$dons) set_request('dons', 'off');
     
    188137        return $erreurs;
    189138}
     139
     140/* reprise en grande partie du code de la fonction traiter de configurer_metas */
     141function formulaires_configurer_association_traiter_dist($form) {
     142        include_spip('formulaires/configurer_metas');
     143        /* code directement copie depuis formulaires_configurer_metas_traiter_dist */
     144        $infos = formulaires_configurer_metas_infos($form);
     145        if (!is_array($infos)) return $infos;
     146        $vars = formulaires_configurer_metas_recense($infos['path'], PREG_PATTERN_ORDER);
     147        $meta = $infos['meta'];
     148        /* fin du code directement copie depuis formulaires_configurer_metas_traiter_dist */
     149        $metas_list = array_flip(array_unique($vars[2])); /* on recupere tous les noms des metas comme cles d'un tableau */
     150
     151        /* ignorer les changements fait dans un module non active */
     152        $dons = _request('dons');
     153        $ventes = _request('ventes');
     154        $prets = _request('prets');
     155        $activites = _request('activites');
     156        $comptes = _request('comptes');
     157
     158        if (!$comptes) {
     159                unset($metas_list['pc_cotisations']);
     160                unset($metas_list['dc_cotisations']);
     161                unset($metas_list['destinations']);
     162        }
     163
     164        if (!$dons) {
     165                unset($metas_list['pc_dons']);
     166                unset($metas_list['dc_dons']);
     167        }
     168       
     169        if (!$ventes) {
     170                unset($metas_list['pc_ventes']);
     171                unset($metas_list['pc_frais_envoi']);
     172                unset($metas_list['dc_ventes']);
     173        }
     174
     175        if (!$prets) {
     176                unset($metas_list['pc_prets']);
     177        }
     178
     179        if (!$activites) {
     180                unset($metas_list['pc_activites']);
     181        }
     182
     183        /* A-t-on modifie les metas pc_XXX si oui il faut faire suivre dans la table des comptes la modif, sinon on perd toutes les operations deja enregistrees */
     184        $pc_cotisations = _request('pc_cotisations');
     185        $pc_dons = _request('pc_dons');
     186        $pc_ventes = _request('pc_ventes');
     187        $pc_frais_envoi = _request('pc_frais_envoi');
     188        $pc_prets = _request('pc_prets');
     189        $pc_activites = _request('pc_activites');
     190
     191        /* condition pour modifier dans la table des comptes: module actif(peut-etre aussi juste active par cet envoi) ET meta pre existente ET meta modifiee */
     192        if ($comptes && $GLOBALS['association_metas']['pc_cotisations'] && ($pc_cotisations != $GLOBALS['association_metas']['pc_cotisations'])) {
     193                sql_updateq('spip_asso_comptes', array('imputation' => $pc_cotisations), "imputation=".$GLOBALS['association_metas']['pc_cotisations']);
     194        }
     195
     196        if ($dons && $GLOBALS['association_metas']['pc_dons'] && ($pc_dons != $GLOBALS['association_metas']['pc_dons'])) {
     197                sql_updateq('spip_asso_comptes', array('imputation' => $pc_dons), "imputation=".$GLOBALS['association_metas']['pc_dons']);
     198        }
     199
     200        if ($ventes && $GLOBALS['association_metas']['pc_ventes'] && ($pc_ventes != $GLOBALS['association_metas']['pc_ventes'])) {
     201                sql_updateq('spip_asso_comptes', array('imputation' => $pc_ventes), "imputation=".$GLOBALS['association_metas']['pc_ventes']);
     202        }
     203
     204        if ($ventes &&
     205                $GLOBALS['association_metas']['pc_frais_envoi'] &&
     206                ($pc_frais_envoi != $GLOBALS['association_metas']['pc_frais_envoi']) &&
     207                ($GLOBALS['association_metas']['pc_frais_envoi'] != $GLOBALS['association_metas']['pc_ventes']) &&
     208                $pc_ventes != $pc_frais_envoi) { /* pour celui la on controle aussi que le pc_vente et pc_frais_envoi etaient differents avant et apres la modif */
     209                        /* si ils etaient egaux, on ne peux pas faire migrer les frais d'envoi vu qu'ils etaient inseres dans la meme operation comptable */
     210                        /* si ils sont maintenant egaux mais ne l'etaient pas avant, toutes les ventes vont apparaitre en double: la vente elle meme et les frais d'envoi. */
     211                        sql_updateq('spip_asso_comptes', array('imputation' => $pc_frais_envoi), "imputation=".$GLOBALS['association_metas']['pc_frais_envoi']);
     212        }
     213
     214        if ($prets && $GLOBALS['association_metas']['pc_prets'] && ($pc_prets != $GLOBALS['association_metas']['pc_prets'])) {
     215                sql_updateq('spip_asso_comptes', array('imputation' => $pc_prets), "imputation=".$GLOBALS['association_metas']['pc_prets']);
     216        }
     217
     218        if ($activites && $GLOBALS['association_metas']['pc_activites'] && ($pc_ != $GLOBALS['association_metas']['pc_activites'])) {
     219                sql_updateq('spip_asso_comptes', array('imputation' => $pc_activites), "imputation=".$GLOBALS['association_metas']['pc_activites']);
     220        }
     221
     222        /* code repris sur formulaires_configurer_metas_traiter_dist */
     223        foreach (array_keys($metas_list) as $k) {
     224                        $v = _request($k);
     225                        ecrire_meta($k, is_array($v) ? serialize($v) : $v, 'oui', $meta);
     226        }
     227        return !isset($infos['prefix']) ? array()
     228                : array('redirect' => generer_url_ecrire($infos['prefix']));
     229}
    190230?>
Note: See TracChangeset for help on using the changeset viewer.