Changeset 74560 in spip-zone


Ignore:
Timestamp:
Aug 3, 2013, 4:08:42 PM (6 years ago)
Author:
marcimat@…
Message:

Report adapté de r74555 : Define CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS à activer (valeur à true) pour supprimer
les contacts/organisations si un auteur passe à la poubelle, et réciproquement.

Location:
_plugins_/contacts_et_organisations
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/contacts_et_organisations/branches/v1/action/supprimer_contact.php

    r50070 r74560  
    3232function action_supprimer_contact_post($id_contact) {
    3333        $id_contact = intval($id_contact);
     34
     35        // supprimer l'auteur associé si demandé dans la configuration
     36        if (CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS) {
     37                $id_auteur = sql_getfetsel("id_auteur", "spip_contacts", "id_contact=" . sql_quote($id_contact));
     38                if ($id_auteur) {
     39                        include_spip('action/editer_auteur');
     40                        autoriser_exception('modifier', 'auteur', $id_auteur);
     41                        auteurs_set($id_auteur, array("statut" => "5poubelle"));
     42                        autoriser_exception('modifier', 'auteur', $id_auteur, false);
     43                }
     44        }
     45
    3446        sql_delete("spip_contacts_liens", "id_contact=" . sql_quote($id_contact));     
    3547        sql_delete("spip_contacts", "id_contact=" . sql_quote($id_contact));
     
    4254function action_supprimer_organisation_post($id_organisation) {
    4355        $id_organisation = intval($id_organisation);
     56
     57        // supprimer l'auteur associé si demandé dans la configuration
     58        if (CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS) {
     59                $id_auteur = sql_getfetsel("id_auteur", "spip_organisations", "id_organisation=" . sql_quote($id_organisation));
     60                if ($id_auteur) {
     61                        include_spip('action/editer_auteur');
     62                        autoriser_exception('modifier', 'auteur', $id_auteur);
     63                        auteurs_set($id_auteur, array("statut" => "5poubelle"));
     64                        autoriser_exception('modifier', 'auteur', $id_auteur, false);
     65                }
     66        }
     67
    4468        sql_delete("spip_organisations_liens", "id_organisation=" . sql_quote($id_organisation));       
    4569        sql_delete("spip_organisations", "id_organisation=" . sql_quote($id_organisation));
    4670        sql_delete("spip_organisations_contacts", "id_organisation=" . sql_quote($id_organisation));
    47        
     71
    4872        include_spip('inc/invalideur');
    4973        suivre_invalideur("id='id_organisation/$id_organisation'");
  • _plugins_/contacts_et_organisations/branches/v1/changelog.txt

    r69655 r74560  
    3838        et (ORGANISATIONS){organisations_auteurs} avec balise #NOM_ORGANISATION
    3939
     401.21.0 (2013-08-01)
     41    Report des améliorations depuis le trunk (version 2.7.0) :
     42    - Lors de la création d'un auteur depuis la fiche contact, passer par l'API d'édition
     43      pour que les pipelines soient appelés.
     44
     451.22.0 (2013-08-03)
     46    Report des améliorations depuis le trunk (version 2.8.0) :
     47    - Define à activer pour supprimer les contacts/organisations si un auteur passe à la poubelle, et réciproquement.
    4048
    4149
  • _plugins_/contacts_et_organisations/branches/v1/contacts_options.php

    r46813 r74560  
    2121
    2222
     23if (!defined('CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS')) {
     24/**
     25 * Option pour supprimer les auteurs si un contact est supprimé et réciproquement.
     26 *
     27 * Il peut être demandé que si un auteur est mis à la poubelle, sa fiche contact (ou organisation)
     28 * associée soit supprimée (par cron, après la suppression effective de l'auteur en base).
     29 * Inversement, lorsqu'un contact (ou organisation) est supprimée, si l'option est activée,
     30 * l'auteur associé est alors mis à la poubelle.
     31 *
     32 * Déclarer à `true` pour l'activer.
     33 *
     34 * @note
     35 *     Ce define est simplement actif dans la branche SPIP 2.1.
     36 *     Le plugin C&O pour SPIIP 3 a un véritable formulaire de configuration interfacé.
     37**/
     38define('CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS', false);
     39}
    2340
    2441?>
  • _plugins_/contacts_et_organisations/branches/v1/contacts_pipelines.php

    r69642 r74560  
    307307}
    308308
     309
     310
     311
     312/**
     313 * Optimiser la base (suppression des contacts et organisations dont les auteurs liés ont disparu)
     314 *
     315 * Si la configuration du plugin indique que la suppression d'un auteur entraîne la suppression
     316 * de la fiche de contact, alors on supprime effectivement ce contact.
     317 *
     318 * @param array $flux
     319 * @return array
     320 */
     321function contacts_optimiser_base_disparus($flux){
     322
     323        // supprimer un contact associé à un auteur disparu si demandé dans la configuration
     324        include_spip('inc/config');
     325        if (CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS) {
     326                $n = 0;
     327
     328                # supprimer les contacts dont les auteurs ont disparu
     329                $res = sql_select(
     330                        "contacts.id_contact",
     331                        "spip_contacts AS contacts
     332                                LEFT JOIN spip_auteurs AS auteurs
     333                                ON contacts.id_auteur=auteurs.id_auteur",
     334                        array(
     335                                "auteurs.id_auteur IS NULL",
     336                                "contacts.id_auteur > 0"
     337                        )
     338                );
     339
     340                while ($row = sql_fetch($res)) {
     341                        $id_contact = $row['id_contact'];
     342                        sql_delete("spip_contacts_liens", "id_contact=" . sql_quote($id_contact));
     343                        sql_delete("spip_contacts", "id_contact=" . sql_quote($id_contact));
     344                        sql_delete("spip_organisations_contacts", "id_contact=" . sql_quote($id_contact));
     345                        $n++;
     346                }
     347
     348                # supprimer les organisations dont les auteurs ont disparu
     349                $res = sql_select(
     350                        "organisations.id_organisation",
     351                        "spip_organisations AS organisations
     352                                LEFT JOIN spip_auteurs AS auteurs
     353                                ON organisations.id_auteur=auteurs.id_auteur",
     354                        array(
     355                                "auteurs.id_auteur IS NULL",
     356                                "organisations.id_auteur > 0"
     357                        )
     358                );
     359
     360                while ($row = sql_fetch($res)) {
     361                        $id_organisation = $row['id_organisation'];
     362                        sql_delete("spip_organisations_liens", "id_organisation=" . sql_quote($id_organisation));
     363                        sql_delete("spip_organisations", "id_organisation=" . sql_quote($id_organisation));
     364                        sql_delete("spip_organisations_contacts", "id_organisation=" . sql_quote($id_organisation));
     365                        $n++;
     366                }
     367
     368                $flux['data'] += $n;
     369        }
     370
     371        return $flux;
     372}
     373
     374
    309375?>
  • _plugins_/contacts_et_organisations/branches/v1/lang/contacts_fr.php

    r57310 r74560  
    1010        'aucune_organisation' => 'Il n\'y a aucune organisation !',
    1111        'auteur_lie' => 'Id de l\'auteur lié',
     12        'auteur_associe_est_a_la_poubelle' => 'L\'auteur associé est à la poubelle ! Cet auteur sera effacé dans quelques jours.',
     13        'auteur_associe_inexistant' => 'L\'auteur associé est inexistant ! L\'auteur avait du être mis à la poubelle et a été supprimé.',
    1214
    1315        // B
     
    134136        // S
    135137        'statut_juridique' => 'Statut juridique',
     138        'suppression_automatique_de_organisation_prochainement' => 'Sans intervention de votre part,
     139                la configuration actuelle du plugin Contacts & Organisations entraînera
     140                la suppression automatique de cette organisation dans les jours à venir.',
     141        'suppression_automatique_du_contact_prochainement' => 'Sans intervention de votre part,
     142                la configuration actuelle du plugin Contacts & Organisations entraînera
     143                la suppression automatique de ce contact dans les jours à venir.',
    136144        'supprimer_contact' => 'Supprimer ce contact',
    137145        'supprimer_organisation' => 'Supprimer cette organisation',
  • _plugins_/contacts_et_organisations/branches/v1/plugin.xml

    r74534 r74560  
    2929        <prefix>contacts</prefix>
    3030
    31         <version>1.21.0</version>
     31        <version>1.22.0</version>
    3232        <version_base>1.7.1</version_base>
    3333
     
    9393        </pipeline>
    9494
     95        <pipeline>
     96                <nom>optimiser_base_disparus</nom>
     97                <inclure>contacts_pipelines.php</inclure>
     98        </pipeline>
     99
    95100        <!-- pour charger les nouvelles balises #PSEUDO et #ORGANISATIONS -->
    96101        <fonctions>contacts_fonctions.php</fonctions>
     
    98103        <!-- generer_url (vivement la 3.0) -->
    99104        <options>contacts_options.php</options>
    100 
    101         <fonctions>contacts_fonctions.php</fonctions>
    102105
    103106        <!-- des boutons pour un acces direct aux contacts / organsations (CRM) -->
  • _plugins_/contacts_et_organisations/branches/v1/prive/infos/contact.html

    r54043 r74560  
    2222                ]
    2323        </div>
     24
     25        [(#STATUT|=={5poubelle}|oui)
     26                <div class='notice'>
     27                        <p><:contacts:auteur_associe_est_a_la_poubelle:></p>
     28
     29                        [(#VAL{CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS}|constant|oui)
     30                                <p><:contacts:suppression_automatique_du_contact_prochainement:></p>
     31                        ]
     32                </div>
     33        ]
     34
    2435        </BOUCLE_auteur_lie>
     36
     37                [(#ID_AUTEUR|oui)
     38                        <div class='notice'>
     39                                <p><:contacts:auteur_associe_inexistant:></p>
     40
     41                                [(#VAL{CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS}|constant|oui)
     42                                        <p><:contacts:suppression_automatique_du_contact_prochainement:></p>
     43                                ]
     44                        </div>
     45                ]
    2546
    2647        <div class="liaison">
    2748                <h3><:contacts:contact_associer_a_auteur:></h3>
    2849                <div class='ajax'>#FORMULAIRE_LIER_CONTACT_AUTEUR{#ID_CONTACT, #SELF}</div>
    29        
    30         [(#AUTORISER{modifier, contact, #ENV{id_contact}}|?{
    31             [(#BOUTON_ACTION{
    32                 <:contacts:creer_auteur_contact:>,
    33                 [(#URL_ACTION_AUTEUR{
    34                         creer_auteur_lie,
    35                     contact/#ID_CONTACT,
    36                     [(#ENV{redirect,#SELF})]
    37                 })]
    38                 '',''
    39             })]
    40         })]
     50
     51                [(#AUTORISER{modifier, contact, #ENV{id_contact}}|?{
     52                        [(#BOUTON_ACTION{
     53                                <:contacts:creer_auteur_contact:>,
     54                                [(#URL_ACTION_AUTEUR{
     55                                        creer_auteur_lie,
     56                                        contact/#ID_CONTACT,
     57                                        [(#ENV{redirect,#SELF})]
     58                                })]
     59                                '',''
     60                        })]
     61                })]
    4162        </div>
    4263        <//B_auteur_lie>
  • _plugins_/contacts_et_organisations/branches/v1/prive/infos/organisation.html

    r54043 r74560  
    2424                ]
    2525        </div>
     26
     27        [(#STATUT|=={5poubelle}|oui)
     28                <div class='notice'>
     29                        <p><:contacts:auteur_associe_est_a_la_poubelle:></p>
     30
     31                        [(#VAL{CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS}|constant|oui)
     32                                <p><:contacts:suppression_automatique_de_organisation_prochainement:></p>
     33                        ]
     34                </div>
     35        ]
     36
    2637        </BOUCLE_auteur_lie>
    27        
     38
     39                [(#ID_AUTEUR|oui)
     40                        <div class='notice'>
     41                                <p><:contacts:auteur_associe_inexistant:></p>
     42
     43                                [(#VAL{CONTACTS_SUPPRESSIONS_RECIPROQUES_AVEC_AUTEURS}|constant|oui)
     44                                        <p><:contacts:suppression_automatique_de_organisation_prochainement:></p>
     45                                ]
     46                        </div>
     47                ]
     48
    2849        <div class="liaison">
    2950                <h3><:contacts:organisation_associer_a_auteur:></h3>
    3051                <div class='ajax'>#FORMULAIRE_LIER_ORGANISATION_AUTEUR{#ID_ORGANISATION, #SELF}</div>
    31        
    32         [(#AUTORISER{modifier, organisation, #ENV{id_organisation}}|?{
    33             [(#BOUTON_ACTION{
    34                 <:contacts:creer_auteur_organisation:>,
    35                 [(#URL_ACTION_AUTEUR{
    36                         creer_auteur_lie,
    37                     organisation/#ID_ORGANISATION,
    38                     [(#ENV{redirect,#SELF})]
    39                 })]
    40                 '',''
    41             })]           
    42         })]     
    43        
     52
     53                [(#AUTORISER{modifier, organisation, #ENV{id_organisation}}|?{
     54                        [(#BOUTON_ACTION{
     55                                <:contacts:creer_auteur_organisation:>,
     56                                [(#URL_ACTION_AUTEUR{
     57                                        creer_auteur_lie,
     58                                        organisation/#ID_ORGANISATION,
     59                                        [(#ENV{redirect,#SELF})]
     60                                })]
     61                                '',''
     62                        })]
     63                })]
     64
    4465        </div>
    4566       
  • _plugins_/contacts_et_organisations/trunk/changelog.txt

    r69834 r74560  
    51512.6.2 (2013-02-10)
    5252    - Icones manquantes
     53
     542.7.0 (2013-08-01)
     55    - Lors de la création d'un auteur depuis la fiche contact, passer par l'API d'édition
     56      pour que les pipelines soient appelés.
     57
     582.8.0 (2013-08-03)
     59    - Option pour supprimer les contacts/organisations si un auteur passe à la poubelle, et réciproquement.
     60   
Note: See TracChangeset for help on using the changeset viewer.