<?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_blocs', 'spip_blocs_liens', 'spip_blocs_types']], ['blocks_installe_config'], ]; 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_blocs'); sql_drop_table('spip_blocs_liens'); sql_drop_table('spip_blocs_types'); # 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', ['bloc', 'blocs_type'])); sql_delete('spip_mots_liens', sql_in('objet', ['bloc', 'blocs_type'])); sql_delete('spip_auteurs_liens', sql_in('objet', ['bloc', 'blocs_type'])); # Nettoyer les versionnages et forums sql_delete('spip_versions', sql_in('objet', ['bloc', 'blocs_type'])); sql_delete('spip_versions_fragments', sql_in('objet', ['bloc', 'blocs_type'])); sql_delete('spip_forum', sql_in('objet', ['bloc', 'blocs_type'])); effacer_meta($nom_meta_base_version); } function blocks_installe_config() { include_spip('blocks_fonctions'); // associer par défaut aux articles et rubriques ecrire_config('blocks/objets', [ 0 => 'spip_articles', 2 => 'spip_rubriques', ], ); // un type de bloc de base : texte sql_insertq( 'spip_blocs_types', [ 'titre' => 'Texte simple', 'identifiant' => 'texte_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', ], ]), ] ); }