Changeset 95347 in spip-zone


Ignore:
Timestamp:
Feb 22, 2016, 11:08:26 PM (4 years ago)
Author:
rastapopoulos@…
Message:

Gros changement, on utilise finalement une table de liens complète. Bien sûr (même si personne ne l'utilise vriament pour l'instant) il y a une migration de l'unique lien précédent vers la table.

Location:
_plugins_/ayants_droit/trunk
Files:
4 added
10 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/ayants_droit/trunk/ayantsdroit_administrations.php

    r95181 r95347  
    2626
    2727        $maj['create'] = array(
    28                 array('maj_tables', array('spip_droits_ayants', 'spip_droits_contrats'))
     28                array('maj_tables', array('spip_droits_ayants', 'spip_droits_contrats', 'spip_droits_contrats_liens')),
    2929        );
    3030       
    3131        // Ajout du champ "montant" dans les contrats
    3232        $maj['1.1.0'] = array(
    33                 array('maj_tables', array('spip_droits_contrats'))
     33                array('maj_tables', array('spip_droits_contrats')),
    3434        );
    3535       
    3636        // Ajout des champs "interlocuteur" et "credits" pour les ayants droit
    3737        $maj['1.2.0'] = array(
    38                 array('maj_tables', array('spip_droits_ayants'))
     38                array('maj_tables', array('spip_droits_ayants')),
     39        );
     40       
     41        // Migration en table de liens
     42        $maj['1.3.0'] = array(
     43                array('maj_tables', array('spip_droits_contrats_liens')),
     44                array('ayantsdroit_maj_1_3_0'),
     45                array('sql_alter', 'table spip_droits_contrats drop column objet'),
     46                array('sql_alter', 'table spip_droits_contrats drop column id_objet'),
    3947        );
    4048
    4149        include_spip('base/upgrade');
    4250        maj_plugin($nom_meta_base_version, $version_cible, $maj);
     51}
     52
     53// Déplacer tous les liens internes dans la table de liens
     54function ayantsdroit_maj_1_3_0() {
     55        if ($contrats = sql_allfetsel('id_droits_contrat, objet, id_objet', 'spip_droits_contrats')) {
     56                include_spip('action/editer_liens');
     57               
     58                foreach ($contrats as $contrat) {
     59                        if ($objet = $contrat['objet'] and $id_objet = $contrat['id_objet']) {
     60                                objet_associer(
     61                                        array('droits_contrat' => $contrat['id_droits_contrat']),
     62                                        array($objet => $id_objet)
     63                                );
     64                        }
     65                }
     66        }
    4367}
    4468
  • _plugins_/ayants_droit/trunk/ayantsdroit_pipelines.php

    r95227 r95347  
    3838        $e = trouver_objet_exec($flux['args']['exec']);
    3939       
    40         // geoculture_artistes sur les documents, geoculture_oeuvres
     40        // Les liaisons sur les objets configurés
    4141        if (
    4242                is_array($e)
     
    4444                and in_array(table_objet_sql($e['type']), lire_config('ayantsdroit/lier_objets',array()))
    4545        ) {
    46                 $texte .= recuperer_fond(
    47                         'prive/objets/editer/ayantsdroit_liens',
    48                         array(
    49                                 'objet' => $e['type'],
    50                                 'id_objet' => $flux['args'][$e['id_table_objet']],
    51                                 'self' => self('&'),
    52                         )
    53                 );
     46                $texte .= recuperer_fond('prive/objets/editer/liens', array(
     47                        'table_source' => 'droits_contrats',
     48                        'objet' => $e['type'],
     49                        'id_objet' => $flux['args'][$e['id_table_objet']]
     50                ));
    5451        }
    5552       
  • _plugins_/ayants_droit/trunk/base/ayantsdroit.php

    r95206 r95347  
    9999                'tables_jointures' => array(
    100100                        'droits_ayants',
     101                        'spip_droits_contrats_liens',
    101102                ),
    102103                'titre' => "(select nom from spip_droits_ayants as da where da.id_droits_ayant=spip_droits_contrats.id_droits_ayant) AS titre, '' AS lang",
     
    135136                'texte_changer_statut' => 'droits_contrat:texte_changer_statut_droits_contrat',
    136137        );
     138       
     139        // Jointures sur les contrats pour tous les objets
     140        $tables[]['tables_jointures'][] = 'droits_contrats_liens';
    137141
    138142        return $tables;
    139143}
     144
     145/**
     146 * Déclaration des tables secondaires (liaisons)
     147 *
     148 * @pipeline declarer_tables_auxiliaires
     149 * @param array $tables
     150 *     Description des tables
     151 * @return array
     152 *     Description complétée des tables
     153 */
     154function ayantsdroit_declarer_tables_auxiliaires($tables) {
     155        $tables['spip_droits_contrats_liens'] = array(
     156                'field' => array(
     157                        'id_droits_contrat'  => 'bigint(21) DEFAULT "0" NOT NULL',
     158                        'id_objet'           => 'bigint(21) DEFAULT "0" NOT NULL',
     159                        'objet'              => 'VARCHAR(25) DEFAULT "" NOT NULL',
     160                        'vu'                 => 'VARCHAR(6) DEFAULT "non" NOT NULL',
     161                ),
     162                'key' => array(
     163                        'PRIMARY KEY'           => 'id_droits_contrat,id_objet,objet',
     164                        'KEY id_droits_contrat' => 'id_droits_contrat',
     165                )
     166        );
     167
     168        return $tables;
     169}
  • _plugins_/ayants_droit/trunk/formulaires/editer_droits_contrat.php

    r95227 r95347  
    1515include_spip('inc/editer');
    1616
    17 function formulaires_editer_droits_contrat_saisies_dist($objet, $id_objet, $id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     17function formulaires_editer_droits_contrat_saisies_dist($id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    1818        $saisies = array(
    1919                array(
     
    102102 *     Hash du formulaire
    103103 */
    104 function formulaires_editer_droits_contrat_identifier_dist($objet, $id_objet, $id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     104function formulaires_editer_droits_contrat_identifier_dist($id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    105105        return serialize(array(intval($id_droits_contrat)));
    106106}
     
    128128 *     Environnement du formulaire
    129129 */
    130 function formulaires_editer_droits_contrat_charger_dist($objet, $id_objet, $id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     130function formulaires_editer_droits_contrat_charger_dist($id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    131131        $valeurs = formulaires_editer_objet_charger('droits_contrat',$id_droits_contrat,'',$lier_trad,$retour,$config_fonc,$row,$hidden);
    132132        unset($valeurs['id_droits_contrat']);
     
    159159 *     Tableau des erreurs
    160160 */
    161 function formulaires_editer_droits_contrat_verifier_dist($objet, $id_objet, $id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
     161function formulaires_editer_droits_contrat_verifier_dist($id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    162162        $erreurs = formulaires_editer_objet_verifier('droits_contrat', $id_droits_contrat);
    163163       
     
    187187 *     Retours des traitements
    188188 */
    189 function formulaires_editer_droits_contrat_traiter_dist($objet, $id_objet, $id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    190         // Pour une création : l'attachement du contrat est demandé dès l'appel du formulaire
    191         if (!intval($id_droits_contrat)) {
    192                 set_request('objet', $objet);
    193                 set_request('id_objet', $id_objet);
    194         }
    195        
     189function formulaires_editer_droits_contrat_traiter_dist($id_droits_contrat='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    196190        // Pas de dates nulles
    197191        if (!_request('date_debut')) {
  • _plugins_/ayants_droit/trunk/paquet.xml

    r95228 r95347  
    22        prefix="ayantsdroit"
    33        categorie="divers"
    4         version="1.3.0"
     4        version="1.4.0"
    55        etat="dev"
    66        compatibilite="[3.1.0;3.1.*]"
    77        logo="prive/themes/spip/images/ayantsdroit-64.png"
    88        documentation=""
    9         schema="1.2.0"
     9        schema="1.3.0"
    1010>
    1111        <nom>Ayants droit</nom>
     
    2222        <pipeline nom="declarer_tables_objets_sql" inclure="base/ayantsdroit.php" />
    2323        <pipeline nom="declarer_tables_interfaces" inclure="base/ayantsdroit.php" />
     24        <pipeline nom="declarer_tables_auxiliaires" inclure="base/ayantsdroit.php" />
    2425        <pipeline nom="affiche_milieu" inclure="ayantsdroit_pipelines.php" />
    2526        <pipeline nom="optimiser_base_disparus" inclure="ayantsdroit_pipelines.php" />
  • _plugins_/ayants_droit/trunk/prive/objets/contenu/droits_contrat.html

    r95227 r95347  
    88</div>]
    99
    10 [<div class="champ contenu_objet[ (#OBJET*|et{#ID_OBJET}|?{'',vide})]">
     10<B_contenus>
     11<div class="champ contenu_objet">
    1112        <label><:onglet_contenu:> : </label>
    12         <span dir="#LANG_DIR" class="objet">
    13                 <a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">(#INFO_TITRE{#OBJET,#ID_OBJET})</a>
    14         </span>
    15 </div>]
     13        <div dir="#LANG_DIR" class="objet">
     14                <ul>
     15                <BOUCLE_contenus(droits_contrats_liens){id_droits_contrat}{par objet,id_objet}>
     16                <li><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#INFO_TITRE{#OBJET,#ID_OBJET}</a></li>
     17                </BOUCLE_contenus>
     18                </ul>
     19        </div>
     20</div>
     21</B_contenus>
    1622
    1723[<div class="champ contenu_date_debut[ (#DATE_DEBUT*|!={0000-00-00 00:00:00}|?{'',vide})]">
  • _plugins_/ayants_droit/trunk/prive/objets/editer/ayantsdroit_liens.html

    r95164 r95347  
    33
    44[(#AUTORISER{creer,droits_contrat})
    5         [(#URL_ECRIRE{droits_contrat_edit,new=oui&objet=#OBJET&id_objet=#ID_OBJET&redirect=[(#VAL{&}|self|rawurlencode)]}|icone_verticale{<:droits_contrat:icone_creer_droits_contrat:>,droits_contrat,new,right})]
     5        [(#URL_ECRIRE{droits_contrat_edit,new=oui&associer_objet=[(#OBJET)]|[(#ID_OBJET)]&redirect=[(#VAL{&}|self|rawurlencode)]}|icone_verticale{<:droits_contrat:icone_creer_droits_contrat:>,droits_contrat,new,right})]
    66]
     7
     8<div class="nettoyeur"></div>
  • _plugins_/ayants_droit/trunk/prive/objets/liste/droits_contrats.html

    r95227 r95347  
    1414                <tr class="first_row">
    1515                        <th class="statut" scope="col">[(#TRI{statut,<span title="<:lien_trier_statut|attribut_html:>">#</span>,ajax})]</th>
    16                         <th class="titre" scope="col">[(#TRI{nom,<:droits_ayant:titre_droits_ayant:> / <:onglet_contenu:>,ajax})]</th>
     16                        <th class="titre" scope="col">[(#TRI{nom,<:droits_ayant:titre_droits_ayant:>,ajax})]</th>
     17                        <th class="contenu" scope="col"><:onglet_contenu:></th>
    1718                        <th class="licence">[(#TRI{id_licence,<:droits_contrat:champ_id_licence_label:>})]</th>
    1819                        <th class="date_debut" scope="col">[(#TRI{date_debut,<:droits_contrat:champ_date_debut_label:>,ajax})]</th>
     
    2526                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
    2627                        <td class="statut">[(#STATUT|puce_statut{droits_contrat,#ID_DROITS_CONTRAT})]</td>
    27                         <td class="titre principale"><a href="[(#ID_DROITS_CONTRAT|generer_url_entite{droits_contrat})]" title="<:info_numero_abbreviation|attribut_html:> #ID_DROITS_CONTRAT">[(#NOM|sinon{<:droits_contrat:champ_id_droits_ayant_inconnu:>})] / #INFO_TITRE{#OBJET,#ID_OBJET}</a></td>
     28                        <td class="titre principale"><a href="[(#ID_DROITS_CONTRAT|generer_url_entite{droits_contrat})]" title="<:info_numero_abbreviation|attribut_html:> #ID_DROITS_CONTRAT">[(#NOM|sinon{<:droits_contrat:champ_id_droits_ayant_inconnu:>})]</a></td>
     29                        <td class="contenu">
     30                                <B_contenus>
     31                                <ul>
     32                                <BOUCLE_contenus(droits_contrats_liens){id_droits_contrat}{par objet,id_objet}>
     33                                <li><a href="[(#ID_OBJET|generer_url_entite{#OBJET})]">#INFO_TITRE{#OBJET,#ID_OBJET}</a></li>
     34                                </BOUCLE_contenus>
     35                                </ul>
     36                                </B_contenus>
     37                        </td>
    2838                        <td class="licence">#LICENCE{non,non}</td>
    2939                        <td class="date_debut secondaire">[(#DATE_DEBUT|!={0000-00-00 00:00:00}|?{#DATE_DEBUT|affdate})]</td>
  • _plugins_/ayants_droit/trunk/prive/squelettes/contenu/droits_contrat.html

    r95227 r95347  
    1111        ]
    1212
    13         <h1>(#ID_DROITS_AYANT|?{#INFO_TITRE{droits_ayant,#ID_DROITS_AYANT},<:droits_contrat:champ_id_droits_ayant_inconnu:>}|concat{' / '}|concat{#INFO_TITRE{#OBJET,#ID_OBJET}}|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{droits_contrat-24.png}|balise_img{droits_contrat,cadre-icone})]</h1>
     13        <h1>(#ID_DROITS_AYANT|?{#INFO_TITRE{droits_ayant,#ID_DROITS_AYANT},<:droits_contrat:champ_id_droits_ayant_inconnu:>}|concat{' / '}|concat{#ID_DROITS_CONTRAT}|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{droits_contrat-24.png}|balise_img{droits_contrat,cadre-icone})]</h1>
    1414
    1515],simple fiche_objet})]
  • _plugins_/ayants_droit/trunk/prive/squelettes/contenu/droits_contrat_edit.html

    r95227 r95347  
     1[(#ENV{associer_objet}|oui)
     2        #SET{associer,#ENV{associer_objet}|explode{'|'}}
     3        #SET{objet,#GET{associer/0}}
     4        #SET{id_objet,#GET{associer/1}}
     5]
    16[(#ID_DROITS_CONTRAT|oui)
    27        [(#AUTORISER{modifier,droits_contrat,#ID_DROITS_CONTRAT}|sinon_interdire_acces)]
    38][(#ID_DROITS_CONTRAT|non)
    4         [(#AUTORISER{creerdroitscontratdans,#ENV{objet},#ENV{id_objet}}|sinon_interdire_acces)]
     9        [(#AUTORISER{creerdroitscontratdans,#GET{objet},#GET{id_objet}}|sinon_interdire_acces)]
    510]
    611#SET{redirect,#ENV{redirect}|sinon{#ID_DROITS_CONTRAT|?{#ID_DROITS_CONTRAT|generer_url_entite{droits_contrat},#URL_ECRIRE{droits_contrats}}}}
     
    1419        <h1>
    1520                <BOUCLE_contrat(DROITS_CONTRATS){id_droits_contrat}{statut?}>
    16                 [(#ID_DROITS_AYANT|?{#INFO_TITRE{droits_ayant,#ID_DROITS_AYANT},<:droits_contrat:champ_id_droits_ayant_inconnu:>}|concat{' / '}|concat{#INFO_TITRE{#OBJET,#ID_OBJET}}|sinon{<:info_sans_titre:>})]
     21                [(#ID_DROITS_AYANT|?{#INFO_TITRE{droits_ayant,#ID_DROITS_AYANT},<:droits_contrat:champ_id_droits_ayant_inconnu:>}|concat{' / '}|concat{#ID_DROITS_CONTRAT}|sinon{<:info_sans_titre:>})]
    1722                </BOUCLE_contrat>
    18                 #INFO_TITRE{#OBJET,#ID_OBJET}
     23                #INFO_TITRE{#GET{objet},#GET{id_objet}}
    1924                <//B_contrat>
    2025        </h1>
     
    2631        <div class="ajax">
    2732]
    28                 [(#FORMULAIRE_EDITER_DROITS_CONTRAT{#ENV{objet}, #ENV{id_objet}, #ENV{id_droits_contrat,oui}, #GET{redirect}})]
     33                [(#FORMULAIRE_EDITER_DROITS_CONTRAT{#ENV{id_droits_contrat,oui}, #GET{redirect}})]
    2934[(#ENV{retourajax,''}|oui)
    3035        </div>
Note: See TracChangeset for help on using the changeset viewer.