From ffb02492083f17256a7657e0ef95b40b67e3fdda Mon Sep 17 00:00:00 2001 From: nicod_ <nicod@lerebooteux.fr> Date: Tue, 6 Jun 2023 15:10:27 +0200 Subject: [PATCH] =?UTF-8?q?Supprimer=20la=20table=20spip=5Fblocks=5Fliens?= =?UTF-8?q?=20et=20d=C3=A9placer=20objet/id=5Fobjet=20dans=20spip=5Fblocks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/blocks.php | 28 +++++++++------------------- blocks_administrations.php | 24 +++++++++++++++++++++++- paquet.xml | 2 +- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/base/blocks.php b/base/blocks.php index 864ca34..9b52976 100644 --- a/base/blocks.php +++ b/base/blocks.php @@ -47,6 +47,9 @@ function blocks_declarer_tables_objets_sql($tables) { 'field' => [ 'id_block' => 'bigint(21) NOT NULL', 'id_blocktype' => 'bigint(21) NOT NULL DEFAULT 0', + 'objet' => 'varchar(25) DEFAULT "" NOT NULL', + 'id_objet' => 'bigint(21) DEFAULT "0" NOT NULL', + 'rang_lien' => 'int(4) DEFAULT "0" NOT NULL', 'ancre' => 'varchar(20) NOT NULL DEFAULT ""', 'valeurs' => 'text NOT NULL DEFAULT ""', 'date' => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"', @@ -56,13 +59,15 @@ function blocks_declarer_tables_objets_sql($tables) { 'key' => [ 'PRIMARY KEY' => 'id_block', 'KEY id_blocktype' => 'id_blocktype', + 'KEY objet' => 'objet', + 'KEY id_objet' => 'id_objet', 'KEY statut' => 'statut', ], 'titre' => 'id_blocktype AS titre', 'date' => 'date', - 'champs_editables' => ['id_blocktype', 'ancre'], - 'champs_versionnes' => ['id_blocktype', 'ancre', 'valeurs'], - 'tables_jointures' => ['spip_blocks_liens'], + 'champs_editables' => ['id_blocktype', 'id_objet', 'objet', 'ancre'], + 'champs_versionnes' => ['id_blocktype', 'id_objet', 'objet', 'ancre', 'valeurs'], + 'tables_jointures' => ['spip_blocktypes'], 'statut_textes_instituer' => [ 'prepa' => 'texte_statut_en_cours_redaction', 'prop' => 'texte_statut_propose_evaluation', @@ -118,7 +123,7 @@ function blocks_declarer_tables_objets_sql($tables) { ]; // jointure potentielle avec tous les objets - $tables[]['tables_jointures'][] = 'blocks_liens'; + $tables[]['tables_jointures'][] = 'blocks'; return $tables; } @@ -134,21 +139,6 @@ function blocks_declarer_tables_objets_sql($tables) { */ function blocks_declarer_tables_auxiliaires($tables) { - $tables['spip_blocks_liens'] = [ - 'field' => [ - 'id_block' => 'bigint(21) DEFAULT "0" NOT NULL', - 'id_objet' => 'bigint(21) DEFAULT "0" NOT NULL', - 'objet' => 'varchar(25) DEFAULT "" NOT NULL', - 'rang_lien' => 'int(4) DEFAULT "0" NOT NULL', - 'vu' => 'varchar(6) DEFAULT "non" NOT NULL', - ], - 'key' => [ - 'PRIMARY KEY' => 'id_block,id_objet,objet', - // clé unique : un block ne peut être associé qu'à un seul objet - 'UNIQUE KEY id_block' => 'id_block', - ], - ]; - // table de liaison entre blocktypes enfants / parents $tables['spip_blocktypes_liens'] = [ 'field' => [ diff --git a/blocks_administrations.php b/blocks_administrations.php index 5821c0b..ba53d83 100644 --- a/blocks_administrations.php +++ b/blocks_administrations.php @@ -26,7 +26,7 @@ function blocks_upgrade($nom_meta_base_version, $version_cible) { $maj = []; $maj['create'] = [ - ['maj_tables', ['spip_blocks', 'spip_blocks_liens', 'spip_blocktypes', 'spip_blocktypes_liens']], + ['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']], ['blocks_installe_config'], ]; @@ -39,6 +39,12 @@ function blocks_upgrade($nom_meta_base_version, $version_cible) { ['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']], ]; + $maj['1.3.0'] = [ + ['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']], + ['blocks_update_1_3_0'], + ['sql_drop_table', 'spip_blocks_liens'], + ]; + include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); } @@ -146,3 +152,19 @@ function blocks_update_1_0_1() { sql_alter('TABLE spip_blocks_liens CHANGE id_bloc id_block bigint(21) NOT NULL DEFAULT 0'); sql_alter('TABLE spip_blocktypes CHANGE id_blocs_type id_blocktype bigint(21) NOT NULL AUTO_INCREMENT'); } + +function blocks_update_1_3_0() { + // transférer les liens de spip_blocks_liens vers spip_blocks + $blocks_liens = sql_allfetsel('*', 'spip_blocks_liens'); + foreach ($blocks_liens as $blocks_lien) { + sql_updateq( + 'spip_blocks', + [ + 'id_objet' => $blocks_lien['id_objet'], + 'objet' => $blocks_lien['objet'], + 'rang_lien' => $blocks_lien['rang_lien'], + ], + 'id_block = ' . $blocks_lien['id_block'] + ); + } +} diff --git a/paquet.xml b/paquet.xml index 2a38d5a..3296b87 100644 --- a/paquet.xml +++ b/paquet.xml @@ -5,7 +5,7 @@ compatibilite="[4.2.0;4.2.*]" logo="prive/themes/spip/images/blocks-xx.svg" documentation="" - schema="1.2.0" + schema="1.3.0" > <nom>Blocks</nom> -- GitLab