You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.2 KiB
PHP
149 lines
4.2 KiB
PHP
<?php
|
|
/**
|
|
* Fichier gérant l'installation et désinstallation du plugin Blocks
|
|
*
|
|
* @plugin Blocks
|
|
* @copyright 2023
|
|
* @author nicod_
|
|
* @licence GNU/GPL
|
|
* @package SPIP\Blocks\Installation
|
|
*/
|
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Fonction d'installation et de mise à jour du plugin Blocks.
|
|
*
|
|
* @param string $nom_meta_base_version
|
|
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
|
|
* @param string $version_cible
|
|
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
|
|
* @return void
|
|
**/
|
|
function blocks_upgrade($nom_meta_base_version, $version_cible) {
|
|
$maj = [];
|
|
|
|
$maj['create'] = [
|
|
['maj_tables', ['spip_blocks', 'spip_blocks_liens', 'spip_blocktypes', 'spip_blocktypes_liens']],
|
|
['blocks_installe_config'],
|
|
];
|
|
|
|
$maj['1.1.0'] = [
|
|
['blocks_update_1_0_1'],
|
|
['maj_tables', ['spip_blocks', 'spip_blocks_liens', 'spip_blocktypes']],
|
|
];
|
|
|
|
$maj['1.2.0'] = [
|
|
['maj_tables', ['spip_blocks', 'spip_blocktypes', 'spip_blocktypes_liens']],
|
|
];
|
|
|
|
include_spip('base/upgrade');
|
|
maj_plugin($nom_meta_base_version, $version_cible, $maj);
|
|
}
|
|
|
|
/**
|
|
* Fonction de désinstallation du plugin Blocks.
|
|
*
|
|
* @param string $nom_meta_base_version
|
|
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
|
|
* @return void
|
|
**/
|
|
function blocks_vider_tables($nom_meta_base_version) {
|
|
|
|
sql_drop_table('spip_blocks');
|
|
sql_drop_table('spip_blocks_liens');
|
|
sql_drop_table('spip_blocktypes');
|
|
|
|
# Nettoyer les liens courants (le génie optimiser_base_disparus se chargera de nettoyer toutes les tables de liens)
|
|
sql_delete('spip_documents_liens', sql_in('objet', ['block', 'blocktype']));
|
|
sql_delete('spip_mots_liens', sql_in('objet', ['block', 'blocktype']));
|
|
sql_delete('spip_auteurs_liens', sql_in('objet', ['block', 'blocktype']));
|
|
# Nettoyer les versionnages et forums
|
|
sql_delete('spip_versions', sql_in('objet', ['block', 'blocktype']));
|
|
sql_delete('spip_versions_fragments', sql_in('objet', ['block', 'blocktype']));
|
|
sql_delete('spip_forum', sql_in('objet', ['block', 'blocktype']));
|
|
|
|
effacer_meta($nom_meta_base_version);
|
|
}
|
|
|
|
function blocks_installe_config() {
|
|
include_spip('blocks_fonctions');
|
|
|
|
// associer par défaut aux articles
|
|
ecrire_config('blocks/objets',
|
|
[
|
|
0 => 'spip_articles',
|
|
],
|
|
);
|
|
|
|
// un type de block de démo : titre + texte
|
|
sql_insertq(
|
|
'spip_blocktypes',
|
|
[
|
|
'titre' => 'Démo texte simple',
|
|
'identifiant' => 'demo_simple',
|
|
'saisies' => blocks_serialize([
|
|
[
|
|
'options' =>
|
|
[
|
|
'nom' => 'titre',
|
|
'label' => 'Titre',
|
|
'conteneur_class' => 'pleine_largeur',
|
|
'obligatoire' => 'oui',
|
|
],
|
|
'identifiant' => uniqid('@'),
|
|
'saisie' => 'input',
|
|
],
|
|
[
|
|
'options' =>
|
|
[
|
|
'nom' => 'texte',
|
|
'label' => 'Texte',
|
|
'conteneur_class' => 'pleine_largeur',
|
|
'rows' => '10',
|
|
'inserer_barre' => 'edition',
|
|
'previsualisation' => 'on',
|
|
],
|
|
'identifiant' => uniqid('@'),
|
|
'saisie' => 'textarea',
|
|
],
|
|
]),
|
|
]
|
|
);
|
|
|
|
// un type de block de démo : articles liés à un mot clé
|
|
sql_insertq(
|
|
'spip_blocktypes',
|
|
[
|
|
'titre' => 'Démo articles par mot clé',
|
|
'identifiant' => 'demo_article_motcle',
|
|
'saisies' => blocks_serialize([
|
|
[
|
|
'options' =>
|
|
[
|
|
'nom' => 'id_mot',
|
|
'label' => 'Mot clé',
|
|
'obligatoire' => 'oui',
|
|
],
|
|
'identifiant' => uniqid('@'),
|
|
'saisie' => 'mot',
|
|
],
|
|
]),
|
|
]
|
|
);
|
|
}
|
|
|
|
function blocks_update_1_0_1() {
|
|
// renommage des tables
|
|
sql_alter('TABLE spip_blocs RENAME TO spip_blocks');
|
|
sql_alter('TABLE spip_blocs_liens RENAME TO spip_blocks_liens');
|
|
sql_alter('TABLE spip_blocs_types RENAME TO spip_blocktypes');
|
|
|
|
sql_alter('TABLE spip_blocks CHANGE id_bloc id_block bigint(21) NOT NULL AUTO_INCREMENT');
|
|
sql_alter('TABLE spip_blocks CHANGE id_blocs_type id_blocktype bigint(21) NOT NULL DEFAULT 0');
|
|
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');
|
|
}
|