Browse Source

PSR SPIP

master
kent1@arscenic.info 6 years ago
parent
commit
0e7aa1d8ee
  1. 19
      base/roles_gis.php
  2. 61
      roles_gis_administrations.php

19
base/roles_gis.php

@ -1,15 +1,18 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
function roles_gis_declarer_tables_objets_sql($tables){
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function roles_gis_declarer_tables_objets_sql($tables) {
array_set_merge($tables, 'spip_gis', array(
"roles_colonne" => "role",
"roles_titres" => array(
'roles_colonne' => 'role',
'roles_titres' => array(
'action' => 'gis_roles:role_action',
'informatif' => 'gis_roles:role_informatif',
),
"roles_objets" => array(
'roles_objets' => array(
'cartes' => array(
'choix' => array('action','informatif'),
'defaut' => 'action'
@ -22,6 +25,6 @@ function roles_gis_declarer_tables_objets_sql($tables){
function roles_gis_declarer_tables_auxiliaires($tables) {
$tables['spip_gis_liens']['field']['role'] = "varchar(30) NOT NULL DEFAULT ''";
$tables['spip_gis_liens']['key']['PRIMARY KEY'] = "id_gis,id_objet,objet,role";
$tables['spip_gis_liens']['key']['PRIMARY KEY'] = 'id_gis,id_objet,objet,role';
return $tables;
}
}

61
roles_gis_administrations.php

@ -1,47 +1,52 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function roles_gis_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(
// supprimer la clé primaire actuelle pour pouvoir en changer en ajoutant la colonne rôle
array('sql_alter', "TABLE spip_gis_liens DROP PRIMARY KEY"),
array('sql_alter', 'TABLE spip_gis_liens DROP PRIMARY KEY'),
// ajout de la colonne role
array('maj_tables', array('spip_gis_liens')),
// la nouvelle colonne est la, mettre sa nouvelle clé primaire
array('sql_alter', "TABLE spip_gis_liens ADD PRIMARY KEY (id_gis,id_objet,objet,role)"),
array('sql_alter', 'TABLE spip_gis_liens ADD PRIMARY KEY (id_gis,id_objet,objet,role)'),
// on passe par défaut tous les liens gis en rôle : action
array('sql_updateq', 'spip_gis_liens', array('role' => 'action'),array('role=' .sql_quote('')))
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
function roles_gis_vider_tables($nom_meta_base_version) {
// tant qu'il existe des doublons, on supprime une ligne doublonnée
// sinon on ne pourra pas modifier la cle primaire ensuite
// cet algo est certainement a optimiser
while ($doublons = sql_allfetsel(
array('id_gis', 'id_objet', 'objet', 'role'),
array('spip_gis_liens'),
'', 'id_gis,id_objet,objet', '', '', 'COUNT(*) > 1'))
{
foreach ($doublons as $d) {
$where = array();
foreach ($d as $cle=>$valeur) {
$where[] = "$cle=".sql_quote($valeur);
}
sql_delete('spip_gis_liens', $where);
// tant qu'il existe des doublons, on supprime une ligne doublonnée
// sinon on ne pourra pas modifier la cle primaire ensuite
// cet algo est certainement a optimiser
while ($doublons = sql_allfetsel(
array('id_gis', 'id_objet', 'objet', 'role'),
array('spip_gis_liens'),
'',
'id_gis,id_objet,objet',
'',
'',
'COUNT(*) > 1'
)) {
foreach ($doublons as $d) {
$where = array();
foreach ($d as $cle => $valeur) {
$where[] = "$cle=".sql_quote($valeur);
}
sql_delete('spip_gis_liens', $where);
}
// supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire
sql_alter("TABLE spip_gis_liens DROP PRIMARY KEY");
sql_alter("TABLE spip_gis_liens DROP COLUMN role");
sql_alter("TABLE spip_gis_liens ADD PRIMARY KEY (id_gis,id_objet,objet)");
effacer_meta($nom_meta_base_version);
}
}
// supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire
sql_alter('TABLE spip_gis_liens DROP PRIMARY KEY');
sql_alter('TABLE spip_gis_liens DROP COLUMN role');
sql_alter('TABLE spip_gis_liens ADD PRIMARY KEY (id_gis,id_objet,objet)');
effacer_meta($nom_meta_base_version);
}
Loading…
Cancel
Save