Changeset 99749 in spip-zone


Ignore:
Timestamp:
Sep 30, 2016, 12:20:58 PM (3 years ago)
Author:
cedric@…
Message:

Suppression de la table spip_organisations_contacts et basculement sur spip_organisations_liens. Suppression de la dependance au plugin editer_liens_simples

Location:
_plugins_/contacts_et_organisations/trunk
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/contacts_et_organisations/trunk/_REGLES_DE_COMMIT.txt

    r84783 r99749  
    22*** A l'attention des developpeurs ou developpeuses qui souhaitent intervenir sur le projete C&O ***
    33
    4 Avant d'intervenir sur ce plugin (notamment pour l'instant au moins dans sa branche v1) merci de bien vouloir lire les quelques lignes qui suivent.
     4Avant d'intervenir sur ce plugin merci de bien vouloir lire les quelques lignes qui suivent.
    55
    66CONCEPTION
     
    2222Ainsi, pour lier un auteur avec un contact, on utilise le champ id_auteur de la table spip_contacts.
    2323Pour lier un auteur avec une organisation, on utilise le champ id_auteur de la table spip_organisations.
    24 Et pour lier un contact avec une ou plusieurs organisations, on utilise la table spip_organisations_contacts.
     24Et pour lier un contact avec une ou plusieurs organisations, on utilise la table spip_organisations_liens.
    2525
    2626
     
    2828---------------
    2929
    30 Ce plugin etant en production sur plusieurs gros sites importants, il faut veiller lors des ameliorations apportees par les developpeurs et developpeuses, a respecter la structure des tables et notamment des tables de liaisons. Il est recommande notament de ne pas supprimer le champ id_auteur des tables spip_contacts et spip_organisations, et de ne pas supprimer la table de liaison specifique spip_organisations_contacts.
     30Ce plugin etant en production sur plusieurs gros sites importants, il faut veiller lors des ameliorations apportees par les developpeurs et developpeuses, a respecter la structure des tables et notamment des tables de liaisons.
     31Il est recommande notament de ne pas supprimer le champ id_auteur des tables spip_contacts et spip_organisations, et de ne pas supprimer la table de liaison specifique spip_organisations_liens.
    3132
    3233
  • _plugins_/contacts_et_organisations/trunk/action/supprimer_contact.php

    r96442 r99749  
    6666        sql_delete("spip_contacts_liens", "id_contact=" . sql_quote($id_contact));
    6767        sql_delete("spip_contacts", "id_contact=" . sql_quote($id_contact));
    68         sql_delete("spip_organisations_contacts", "id_contact=" . sql_quote($id_contact));
     68        sql_delete("spip_organisations_liens", "objet=".sql_quote('contact')." AND id_objet=" . sql_quote($id_contact));
    6969
    7070        include_spip('inc/invalideur');
     
    9595        sql_delete("spip_organisations_liens", "id_organisation=" . sql_quote($id_organisation));
    9696        sql_delete("spip_organisations", "id_organisation=" . sql_quote($id_organisation));
    97         sql_delete("spip_organisations_contacts", "id_organisation=" . sql_quote($id_organisation));
    9897
    9998        include_spip('inc/invalideur');
  • _plugins_/contacts_et_organisations/trunk/base/contacts.php

    r96442 r99749  
    2929        $interface['table_des_tables']['contacts'] = 'contacts';
    3030        $interface['table_des_tables']['contacts_liens'] = 'contacts_liens';
    31         $interface['table_des_tables']['organisations_contacts'] = 'organisations_contacts';
    32        
     31
    3332        // -- Liaisons organisations/contacts
    34         $interface['tables_jointures']['spip_organisations_contacts'][] = 'contacts';
    35         $interface['tables_jointures']['spip_organisations_contacts'][] = 'organisations';
     33        $interface['tables_jointures']['spip_organisations_liens'][] = 'contacts';
     34        $interface['tables_jointures']['spip_organisations_liens'][] = 'organisations';
    3635
    3736        /**
     
    157156                'tables_jointures' => array(
    158157                        'auteurs', 'annuaires',
    159                         'organisations_contacts',
    160158                        'organisations_liens',
    161159                ),
     
    218216                'tables_jointures' => array(
    219217                        'auteurs', 'annuaires',
    220                         'organisations_contacts',
     218                        'organisations_liens',
    221219                        'contacts_liens',
    222220                ),
     
    254252function contacts_declarer_tables_auxiliaires($tables_auxiliaires) {
    255253
    256         //-- Table organisations_contacts -------------------------------------
    257         $organisations_contacts = array(
    258                 "id_organisation" => "BIGINT(21) NOT NULL",
    259                 "id_contact"      => "BIGINT(21) NOT NULL",
    260                 "type_liaison"    => "tinytext NOT NULL DEFAULT ''",
    261         );
    262         $organisations_contacts_key = array(
    263                 "PRIMARY KEY"          => "id_organisation, id_contact",
    264                 "KEY id_organisation"  => "id_organisation",
    265                 "KEY id_contact"       => "id_contact"
    266         );
    267         $tables_auxiliaires['spip_organisations_contacts'] =
    268                 array('field' => &$organisations_contacts, 'key' => &$organisations_contacts_key);
    269 
    270 
    271254        //-- Table organisations_liens -------------------------------------
    272255        $organisations_liens = array(
  • _plugins_/contacts_et_organisations/trunk/changelog.txt

    r93725 r99749  
    61612.12.6 (2015-12-16)
    6262    - Ajout de squelettes de pagination alphabétique pour les contacts et les organisations.
     63
     643.0.0 (2016-09-30)
     65    - tous les liens sur spip_organisations_liens et spip_contacts_lien, utilisation uniquement de #FORMULAIRE_EDITER_LIENS
  • _plugins_/contacts_et_organisations/trunk/contacts_administrations.php

    r99745 r99749  
    207207        );
    208208
     209        /*
     210        On supprime enfin spip_organisations_contacts pour le mettre dans spip_organisations_liens
     211        ce qui est fonctionnel en SPIP 3.x+
     212        */
     213        $maj['1.13.0'] = array(
     214                array('conctacts_maj_1_13_0'),
     215                array('sql_drop_table','spip_organisations_contacts'),
     216        );
     217
    209218        include_spip('base/upgrade');
    210219        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     
    224233        sql_drop_table("spip_contacts");
    225234        sql_drop_table("spip_contacts_liens");
    226         sql_drop_table("spip_organisations_contacts");
    227235        sql_drop_table("spip_organisations_liens");
    228236
     
    399407        }
    400408}
     409
     410/**
     411 * MAJ 1.13.0 : transferer de spip_organisations_contacts dans spip_organisations_liens
     412 */
     413function conctacts_maj_1_13_0() {
     414
     415        $res = sql_select('*','spip_organisations_contacts');
     416        $nb = sql_count($res);
     417        spip_log($s="conctacts_maj_1_13_0 : $nb restants","maj");
     418        echo "$s<br />";
     419        while($row = sql_fetch($res)) {
     420                $where = 'id_organisation=' . intval($row['id_organisation'])
     421                        . ' AND id_contact=' . intval($row['id_contact'])
     422                  . ' AND type_liaison=' . sql_quote($row['type_liaison']);
     423
     424                $ins = $row;
     425                $ins['id_objet'] = $row['id_contact'];
     426                $ins['objet'] = 'contact';
     427                unset($ins['id_contact']);
     428                sql_insertq('spip_organisations_liens', $ins);
     429                sql_delete('spip_organisations_contacts', $where);
     430
     431                if (time()>_TIME_OUT){
     432                        return;
     433                }
     434        }
     435}
     436
  • _plugins_/contacts_et_organisations/trunk/contacts_fonctions.php

    r96442 r99749  
    105105        if ($crit->not)
    106106                $not = ", 'NOT'";
    107         $boucle->from['LOC'] = 'spip_organisations_contacts';
    108         $boucle->from_type['LOC'] = 'left';
     107        $boucle->from['LOC'] = 'spip_organisations_liens';
     108        $boucle->from_type['LOC'] = 'LEFT';
    109109        $boucle->join['LOC'] = array("'organisations'","'id_organisation'","'id_organisation'");
    110 
    111         $boucle->select[] = "COUNT(LOC.id_contact) AS compteur_contacts";
     110        $boucle->where[] = "'LOC.objet='.sql_quote('contact')";
     111
     112        $boucle->select[] = "COUNT(LOC.id_objet) AS compteur_contacts";
    112113        $boucle->group[] = 'organisations.id_organisation';
    113114}
  • _plugins_/contacts_et_organisations/trunk/contacts_pipelines.php

    r98208 r99749  
    205205                        sql_delete("spip_contacts_liens", "id_contact=" . sql_quote($id_contact));
    206206                        sql_delete("spip_contacts", "id_contact=" . sql_quote($id_contact));
    207                         sql_delete("spip_organisations_contacts", "id_contact=" . sql_quote($id_contact));
     207                        sql_delete("spip_organisations_liens", "objet=".sql_quote('contact')." AND id_objet=" . sql_quote($id_contact));
    208208                        $n++;
    209209                }
     
    225225                        sql_delete("spip_organisations_liens", "id_organisation=" . sql_quote($id_organisation));
    226226                        sql_delete("spip_organisations", "id_organisation=" . sql_quote($id_organisation));
    227                         sql_delete("spip_organisations_contacts", "id_organisation=" . sql_quote($id_organisation));
    228227                        $n++;
    229228                }
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_contact.php

    r96442 r99749  
    9191                }
    9292                if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
    93                         // organisation sur spip_organisations_contacts
     93                        include_spip('action/editer_liens');
     94                        // organisation sur spip_organisations_liens
    9495                        if ($objet == 'organisation') {
    95                                 include_spip('action/editer_liens_simples');
    96                                 objet_associer_simples(array($objet => $id_objet), array('contact' => $id_contact));
     96                                objet_associer(array($objet => $id_objet), array('contact' => $id_contact));
    9797                        } else {
    98                                 include_spip('action/editer_liens');
    9998                                objet_associer(array('contact' => $id_contact), array($objet => $id_objet));
    10099                        }
  • _plugins_/contacts_et_organisations/trunk/formulaires/editer_organisation.php

    r96442 r99749  
    9494                }
    9595                if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
    96                         // contact sur spip_organisations_contacts
    97                         if ($objet == 'contact') {
    98                                 include_spip('action/editer_liens_simples');
    99                                 objet_associer_simples(array('organisation' => $id_organisation), array($objet => $id_objet));
    100                         } else {
    101                                 include_spip('action/editer_liens');
    102                                 objet_associer(array('organisation' => $id_organisation), array($objet => $id_objet));
    103                         }
     96                        include_spip('action/editer_liens');
     97                        objet_associer(array('organisation' => $id_organisation), array($objet => $id_objet));
    10498                        if (isset($res['redirect']))
    10599                                $res['redirect'] = parametre_url($res['redirect'], "id_lien_ajoute", $id_organisation, '&');
  • _plugins_/contacts_et_organisations/trunk/paquet.xml

    r99745 r99749  
    66        compatibilite="[3.0.0;3.1.*]"
    77        logo="images/contacts-128.png"
    8         schema="1.12.0"
     8        schema="1.13.0"
    99        documentation="http://contrib.spip.net/Plugin-Contacts-Organisations"
    1010>
     
    3333        <necessite nom="saisies" compatibilite="[1.15.3;[" />
    3434        <necessite nom="medias" compatibilite="[2.7.27;[" />
    35         <necessite nom="editer_liens_simples" compatibilite="[1.0.0;[" />
    3635        <necessite nom="spip_bonux" compatibilite="[3.1.0;[" />
    3736
  • _plugins_/contacts_et_organisations/trunk/prive/objets/liste/contacts_lies.html

    r94605 r99749  
    4848
    4949                        [(#REM) sur boucle pour le crayon, en fonction de la table de liaison ]
    50                         <BOUCLE_liaison_sur_organisation(organisations_contacts)
     50                        <BOUCLE_liaison_sur_organisation(organisations_liens)
    5151                                {si (#ENV{objet}|=={organisation})}
    52                                 {id_contact}{id_organisation=#ENV{id_objet}}>
     52                                {id_objet=#ID_CONTACT}{objet=contact}{id_organisation=#ENV{id_objet}}>
    5353                                <td class='type #EDIT{type_liaison}'>[(#TYPE_LIAISON|sinon{-})]</td>
    5454                        </BOUCLE_liaison_sur_organisation>
  • _plugins_/contacts_et_organisations/trunk/prive/objets/liste/organisations_lies.html

    r94605 r99749  
    4747
    4848                        [(#REM) sur boucle pour le crayon, en fonction de la table de liaison ]
    49                         <BOUCLE_liaison_sur_contact(organisations_contacts)
    50                                 {si (#ENV{objet}|=={contact})}
    51                                 {id_contact=#ENV{id_objet}}{id_organisation}>
     49                        <BOUCLE_liaison(organisations_liens){id_objet=#ENV{id_objet}}{objet=#ENV{objet}}{id_organisation}>
    5250                                <td class='type #EDIT{type_liaison}'>[(#TYPE_LIAISON|sinon{-})]</td>
    53                         </BOUCLE_liaison_sur_contact>
    54                                 <BOUCLE_liaison_autre(organisations_liens)
    55                                         {si #ENV{_objet_lien}|=={organisation}}
    56                                         {id_objet=#ENV{id_objet}}{objet=#ENV{objet}}{id_organisation}>
    57                                         <td class='type #EDIT{type_liaison}'>[(#TYPE_LIAISON|sinon{-})]</td>
    58                                 </BOUCLE_liaison_autre>
    59                                         [(#REM)
    60                                                 Ici, on liste les organisations mais elles sont liées
    61                                                 sur autre chose que sur spip_organisations_liens
    62                                                 On ne peut savoir si la table a un type de liaison...
    63                                                 <td class='type'></td>
    64                                         ]
    65                                 <//B_liaison_autre>
    66                         <//B_liaison_sur_contact>
     51                        </BOUCLE_liaison>
     52                                [(#REM)
     53                                        Ici, on liste les organisations mais elles sont liées
     54                                        sur autre chose que sur spip_organisations_liens
     55                                        On ne peut savoir si la table a un type de liaison...
     56                                        <td class='type'></td>
     57                                ]
     58                        <//B_liaison>
    6759
    6860                        <td class='action'>
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/contenu/contact.html

    r96054 r99749  
    2424
    2525<div class="ajax">
    26         #FORMULAIRE_EDITER_LIENS_SIMPLES{organisations,contact,#ID_CONTACT,#AUTORISER{modifier,contact,#ID_CONTACT}}
     26        #FORMULAIRE_EDITER_LIENS{organisations,contact,#ID_CONTACT,#AUTORISER{modifier,contact,#ID_CONTACT}}
    2727</div>
    2828
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/contenu/contact_sur_auteur.html

    r69824 r99749  
    2828
    2929<div class="ajax">
    30         #FORMULAIRE_EDITER_LIENS_SIMPLES{organisations,contact,#ID_CONTACT,#AUTORISER{modifier,contact,#ID_CONTACT}}
     30        #FORMULAIRE_EDITER_LIENS{organisations,contact,#ID_CONTACT,#AUTORISER{modifier,contact,#ID_CONTACT}}
    3131</div>
    3232
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/contenu/organisation.html

    r84783 r99749  
    3939
    4040<div class="ajax">
    41         #FORMULAIRE_EDITER_LIENS_SIMPLES{organisation,#ID_ORGANISATION,contacts,#AUTORISER{modifier,organisation,#ID_ORGANISATION}}
     41        #FORMULAIRE_EDITER_LIENS{organisation,#ID_ORGANISATION,contacts,#AUTORISER{modifier,organisation,#ID_ORGANISATION}}
    4242</div>
    4343
  • _plugins_/contacts_et_organisations/trunk/prive/squelettes/contenu/organisation_sur_auteur.html

    r99534 r99749  
    3939
    4040<div class="ajax">
    41         #FORMULAIRE_EDITER_LIENS_SIMPLES{organisation,#ID_ORGANISATION,contacts,#AUTORISER{modifier,organisation,#ID_ORGANISATION}}
     41        #FORMULAIRE_EDITER_LIENS{organisation,#ID_ORGANISATION,contacts,#AUTORISER{modifier,organisation,#ID_ORGANISATION}}
    4242</div>
    4343
  • _plugins_/contacts_et_organisations/trunk/test/co_annuaire.html

    r84783 r99749  
    1212        <p class='ariane'>
    1313                <a href="#URL_PAGE{test/co_annuaire}">Annuaire</a>
    14                 <BOUCLE_OrganisationContact(ORGANISATIONS organisations_contacts){id_contact}>
     14                <BOUCLE_OrganisationContact(ORGANISATIONS organisations_liens){id_contact}>
    1515                        <BOUCLE_ArboOrganisations(ORGANISATIONS){id_organisation=#ID_PARENT}{tous}>
    1616                                <BOUCLE_HierarchieArboOrganisations(BOUCLE_ArboOrganisations) />
Note: See TracChangeset for help on using the changeset viewer.