You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.2 KiB
73 lines
2.2 KiB
<?php |
|
/** |
|
* Plugin Rôles de documents |
|
* (c) 2015 |
|
* Licence GNU/GPL |
|
*/ |
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) { |
|
return; |
|
} |
|
|
|
|
|
/** |
|
* Fonction d'installation du plugin et de mise à jour. |
|
**/ |
|
function roles_documents_upgrade($nom_meta_base_version, $version_cible) { |
|
$maj = array(); |
|
|
|
// Ajout des rôles à la table de liens des documents |
|
$maj['create'] = array( |
|
// supprimer la clé primaire actuelle pour pouvoir en changer en ajoutant la colonne rôle |
|
array('sql_alter', 'TABLE spip_documents_liens DROP PRIMARY KEY'), |
|
// ajout de la colonne role |
|
array('maj_tables', array('spip_documents_liens')), |
|
// la nouvelle colonne est la, mettre sa nouvelle clé primaire |
|
array('sql_alter', 'TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet,role)'), |
|
// Mettre un rôle 'document' par défaut aux liens dépourvus de rôle |
|
array('sql_update', 'spip_documents_liens', array('role' => sql_quote('document')), 'role=' . sql_quote('')), |
|
); |
|
|
|
// Mettre un rôle 'document' par défaut aux liens dépourvus de rôle |
|
$maj['1.0.1'] = array( |
|
array('sql_update', 'spip_documents_liens', array('role' => sql_quote('document')), 'role=' . sql_quote('')), |
|
); |
|
|
|
include_spip('base/upgrade'); |
|
maj_plugin($nom_meta_base_version, $version_cible, $maj); |
|
} |
|
|
|
|
|
/** |
|
* Fonction de désinstallation du plugin. |
|
**/ |
|
function roles_documents_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_document', 'id_objet', 'objet', 'role'), |
|
array('spip_documents_liens'), |
|
'', |
|
'id_document,id_objet,objet', |
|
'', |
|
'', |
|
'COUNT(*) > 1' |
|
)) { |
|
foreach ($doublons as $d) { |
|
$where = array(); |
|
foreach ($d as $cle => $valeur) { |
|
$where[] = "$cle=".sql_quote($valeur); |
|
} |
|
sql_delete('spip_documents_liens', $where); |
|
} |
|
} |
|
|
|
// supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire |
|
sql_alter('TABLE spip_documents_liens DROP PRIMARY KEY'); |
|
sql_alter('TABLE spip_documents_liens DROP COLUMN role'); |
|
sql_alter('TABLE spip_documents_liens ADD PRIMARY KEY (id_document,id_objet,objet)'); |
|
|
|
effacer_meta($nom_meta_base_version); |
|
}
|
|
|