/** * Installation du plugin * * A chaque appel de exec/admin_plugin, si le plugin est active, * spip detecte spiplistes_install() et l'appelle 3 fois : * 1/ $action = 'test' * 2/ $action = 'install' * 3/ $action = 'test' * @global string $GLOBALS['meta']['spiplistes_version'] * @return boolean */ function spiplistes_install ($action) { include_spip('inc/spipliste_api_globales'); spiplistes_debug_log('spiplistes_install()'); switch($action) { case 'test': // si renvoie true, c'est que la base est a jour, inutile de re-installer // la valise plugin "effacer tout" apparait. // si renvoie false, SPIP revient avec $action = 'install' (une seule fois) $spiplistes_version = $GLOBALS['meta']['spiplistes_version']; $result = ( $spiplistes_version && ($spiplistes_version >= spiplistes_real_version_get(_SPIPLISTES_PREFIX)) && sql_showtable("spip_listes",true) ); //spiplistes_debug_log("TEST: ".($result ? "OK" : "NO")); return($result); break; case 'install': if(!$GLOBALS['meta']['spiplistes_version']) { $result = spiplistes_base_creer(); $str_log = "create"; } else { // logiquement, ne devrait pas passer par la (upgrade assure par mes_options) include_spip('base/spiplistes_upgrade'); $result = spiplistes_upgrade(); $str_log = "upgrade"; } $result = ( $result && spiplistes_initialise_spip_metas_spiplistes() && spiplistes_activer_inscription_visiteurs() ); $str_log = "INSTALL: $str_log " . spiplistes_str_ok_error($result); if(!$result) { // nota: SPIP ne filtre pas le resultat. Si retour en erreur, // la case a cocher du plugin sera quand meme cochee $str_log .= ": PLEASE REINSTALL PLUGIN"; } else { echo(_T('spiplistes:_aide_install' , array('url_config' => generer_url_ecrire(_SPIPLISTES_EXEC_CONFIGURE)) )); } spiplistes_log($str_log); return($result); break; case 'uninstall': // est appelle lorsque "Effacer tout" dans exec=admin_plugin $result = spiplistes_vider_tables(); spiplistes_log("UNINSTALL: " . spiplistes_str_ok_error($result)); return($result); break; default: break; } return (FALSE); }
/** * Pour mise à jour de PSIP-Listes * * @return string */ function spiplistes_upgrade () { $spiplistes_name = _SPIPLISTES_PREFIX; $spiplistes_current_version = spiplistes_current_version_get(_SPIPLISTES_PREFIX); $spiplistes_real_version = spiplistes_real_version_get(_SPIPLISTES_PREFIX); $spiplistes_current_version_base = spiplistes_current_version_base_get(_SPIPLISTES_PREFIX); $spiplistes_real_version_base = spiplistes_real_version_base_get(_SPIPLISTES_PREFIX); spiplistes_log("VERSIONS MOD DETECTED [$spiplistes_current_version::$spiplistes_real_version][$spiplistes_current_version_base::$spiplistes_real_version_base]"); if(!$spiplistes_current_version) { // SPIP-Listes n'a jamais ete installe ? include_spip('base/spiplistes_init'); $spiplistes_current_version_base = spiplistes_base_creer(); } if($spiplistes_current_version_base < $spiplistes_real_version_base) { // upgrade de la base ? $spiplistes_current_version_base = spiplistes_upgrade_base( $spiplistes_name , $spiplistes_current_version , $spiplistes_current_version_base , $spiplistes_real_version_base ); } if($spiplistes_current_version < $spiplistes_real_version) { spiplistes_log("UPGRADING $spiplistes_name $spiplistes_current_version TO $spiplistes_real_version"); if($spiplistes_current_version < 1.9982) { // Ne modifie pas le schema. Ajoute juste une legende sur les tables sql_alter("TABLE spip_listes COMMENT ".sql_quote("Listes de diffusion")); sql_alter("TABLE spip_courriers COMMENT ".sql_quote("Panier des courriers (casiers)")); sql_alter("TABLE spip_auteurs_courriers COMMENT ".sql_quote("Queue des envois de courriers")); sql_alter("TABLE spip_auteurs_listes COMMENT ".sql_quote("Listes de abonnements aux listes")); sql_alter("TABLE spip_auteurs_mod_listes COMMENT ".sql_quote("Moderateurs des listes de diffusion")); sql_alter("TABLE spip_auteurs_elargis COMMENT ".sql_quote("Preferences des auteurs/abonnes (formats recept.)")); $spiplistes_current_version = 1.9923; } /* ... */ // Ajouter au dessus de cette ligne les patches si besoin pour nouvelle version de SPIP-Listes // qui ne concerne pas la base (changement de nom de script, de patron, etc.) // fin des ajouts de patches ecrire_meta('spiplistes_version', $spiplistes_real_version); spiplistes_ecrire_metas(); } return($spiplistes_current_version); }