diff --git a/base/blocks.php b/base/blocks.php index 864ca34a108067a9ff2353edbfeeaf6453d88375..9b52976423e2bb242c66c06707dc7fb8c5f37530 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 5821c0b7e4789b5d940233328cbeff83ca01eb4a..ba53d833f7d7ef80064eb0598f23826c7e01bec4 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 2a38d5a48a8d56a920400412bbef9e25cf75193f..3296b87b88b45c99c3386a8400fc8587cf9412ff 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>