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.
 
 
 
 

148 lines
4.3 KiB

<?php
/**
* Fonctions d'installation et de désinstallation du plugin Albums
*
* @plugin Albums
* @copyright 2014
* @author Tetue, Charles Razack
* @licence GNU/GPL
* @package SPIP\Albums\Administrations
**/
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'installation et de mise à jour du plugin.
*
* @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 albums_upgrade($nom_meta_base_version, $version_cible) {
include_spip('inc/config');
$maj = [];
// Création des tables + options de configuration
$maj['create'] = [
['maj_tables', ['spip_albums','spip_albums_liens']],
['albums_verifier_config_documents'],
['albums_ecrire_config_defaut'],
];
// Suppression de la colonne «categorie»
$maj['0.0.2'] = [
['sql_alter','TABLE spip_albums DROP COLUMN categorie'],
];
// Statut «prepa» au lieu de «refuse»
$maj['0.0.3'] = [
['sql_updateq', 'spip_albums', ['statut' => 'prepa'], 'statut=' . sql_quote('refuse')]
];
// passer le titre en «text» au lieu de «varchar» pour la recherche fulltext
// passer le titre en «text» au lieu de «mediumtext»
// passer le satut en «varchar(10)» au lieu 255
// nettoyer les options de configuration obsolètes
$maj['1.0.0'] = [
['sql_alter', "TABLE spip_albums CHANGE titre titre text DEFAULT '' NOT NULL"],
['sql_alter', "TABLE spip_albums CHANGE descriptif descriptif text DEFAULT '' NOT NULL"],
['sql_alter', "TABLE spip_albums CHANGE statut statut varchar(10) DEFAULT '' NOT NULL"],
['effacer_config', 'albums/afficher_champ_descriptif'],
['effacer_config', 'albums/vue_icones'],
['effacer_config', 'albums/vue_liste'],
];
// Ajout des `credits`, de `rang_lien` sur la table de liens + nouvelle config par défaut
$maj['1.1.0'] = [
['maj_tables', ['spip_albums', 'spip_albums_liens']],
['albums_ecrire_config_defaut'],
];
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Fonction de désinstallation du plugin.
*
* @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 albums_vider_tables($nom_meta_base_version) {
# Supression des tables
sql_drop_table('spip_albums');
sql_drop_table('spip_albums_liens');
# Suppression des liens des documents liés aux albums
sql_delete('spip_documents_liens', sql_in('objet', ['album']));
# Nettoyer les versionnages et forums
sql_delete('spip_versions', sql_in('objet', ['album']));
sql_delete('spip_versions_fragments', sql_in('objet', ['album']));
sql_delete('spip_forum', sql_in('objet', ['album']));
# Suppression meta
effacer_meta($nom_meta_base_version);
effacer_meta('albums');
# Retirer les albums de la liste des objets où téléverser des documents
if (in_array('spip_albums', $objets = @array_filter(explode(',', $GLOBALS['meta']['documents_objets'])))) {
$objets = array_diff($objets, ['spip_albums']);
ecrire_meta('documents_objets', implode(',', $objets));
}
}
/**
* Vérifie que les albums figurent dans la config des objets des documents.
*
* @param array|null $config
* valeurs sous forme de tableau (à défaut on prend la config actuelle)
* @param boolean $ecrire
* true pour enregistrer la nouvelle config (défaut)
* @return array
* Valeurs complétées
*/
function albums_verifier_config_documents(?array $config = null, bool $ecrire = true): array {
include_spip('inc/config');
$objets = (is_null($config) ? explode(',', lire_config('documents_objets')) : $config);
$objets_full = array_merge($objets, ['spip_albums']);
$config_full = implode(',', array_unique($objets_full));
if (
$ecrire === true
and !in_array('spip_albums', $objets)
) {
ecrire_config('documents_objets', $config_full);
}
return $objets_full;
}
/**
* Écrit les valeurs par défaut de la configuration des albums
*
* @return bool
*/
function albums_ecrire_config_defaut(): bool {
include_spip('inc/config');
$maj = ecrire_config(
'albums',
[
'disposition' => 'inline',
'img_largeur' => 500,
'img_hauteur' => 400,
]
);
return $maj;
}