source: spip-zone/_plugins_/roles_auteurs/trunk/roles_auteurs_administrations.php @ 64032

Last change on this file since 64032 was 64032, checked in by marcimat@…, 7 years ago

Mise en place de 2 plugins autour des rôles sur les liaisons :

  • «roles» gère l'API de rôles, et la surcharge des fichiers de SPIP (formulaire d'édition de lien et API de lien) et la mise en place d'outils pour l'interface utilisateur (chosen, et un peu de bootstrap). Il manque 2 fichiers qui arriveront après.
  • «roles_auteurs» est un exemple de mise en place de l'API de rôles pour la liaison entre auteurs et articles.
File size: 2.0 KB
Line 
1<?php
2/**
3 * Plugin Rôles d&#039;auteurs
4 * (c) 2012 Marcillaud Matthieu
5 * Licence GNU/GPL
6 */
7
8if (!defined('_ECRIRE_INC_VERSION')) return;
9
10
11/**
12 * Fonction d'installation du plugin et de mise à jour.
13**/
14function roles_auteurs_upgrade($nom_meta_base_version, $version_cible) {
15        $maj = array();
16
17        $maj['create'] = array(
18                // supprimer la clé primaire actuelle pour pouvoir en changer en ajoutant la colonne rôle
19                array('sql_alter', "TABLE spip_auteurs_liens DROP PRIMARY KEY"),
20                // ajout de la colonne role
21                array('maj_tables', array('spip_auteurs_liens')),
22                // la nouvelle colonne est la, mettre sa nouvelle clé primaire
23                array('sql_alter', "TABLE spip_auteurs_liens ADD PRIMARY KEY (id_auteur,id_objet,objet,role)"),
24                // on passe par défaut tous les liens auteurs/articles en rôle : redacteur
25                array('sql_updateq', 'spip_auteurs_liens', array('role' => 'redacteur'), array(
26                        'role=' . sql_quote(''),
27                        'objet=' . sql_quote('article')
28                ))
29        );
30
31        include_spip('base/upgrade');
32        maj_plugin($nom_meta_base_version, $version_cible, $maj);
33}
34
35
36/**
37 * Fonction de désinstallation du plugin.
38**/
39function roles_auteurs_vider_tables($nom_meta_base_version) {
40
41        // tant qu'il existe des doublons, on supprime une ligne doublonnée
42        // sinon on ne pourra pas modifier la cle primaire ensuite
43        // cet algo est certainement a optimiser
44        while ($doublons = sql_allfetsel(
45                                array('id_auteur', 'id_objet', 'objet', 'role'),
46                                array('spip_auteurs_liens'),
47                                '', 'id_auteur,id_objet,objet', '', '', 'COUNT(*) > 1'))
48        {
49                foreach ($doublons as $d) {
50                        $where = array();
51                        foreach ($d as $cle=>$valeur) {
52                                $where[] = "$cle=".sql_quote($valeur);
53                        }
54                        sql_delete('spip_auteurs_liens', $where);
55                }
56        }
57
58        // supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire
59        sql_alter("TABLE spip_auteurs_liens DROP PRIMARY KEY");
60        sql_alter("TABLE spip_auteurs_liens DROP COLUMN role");
61        sql_alter("TABLE spip_auteurs_liens ADD PRIMARY KEY (id_auteur,id_objet,objet)");
62
63        effacer_meta($nom_meta_base_version);
64}
65
66?>
Note: See TracBrowser for help on using the repository browser.