Exemple #1
0
/**
 * 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);
}
Exemple #2
0
/**
 * 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);
}