Esempio n. 1
0
/**
 * fermer la connection depuis le site distant
 * quand on a fini
 *
 * @param array $status
 * @param array $data
 * @return bool
 */
function migration_reception_end_dist($status, $data){


	spip_log('fin de migration. Resultat:'.var_export($data,1),'migration');
	$status['status'] = 'end';
	if ($data['status']=='abort'){
		$status = abandonner_migration_depuis($status);
	}
	else {
		// s'assurer que l'auteur qui migre est bien webmestre a l'arrivee
		$id_webmestre = $data['id_webmestre'];
		include_spip('base/abstract_sql');
		$row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_webmestre));
		if ($row AND $row['statut']=='0minirezo'){
			// y a-t-il un champ webmestre dans la base ?
			if (!isset($row['webmestre'])){
				sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL");
				$row['webmestre']='non';
			}
			if ($row['webmestre']!='oui'){
				sql_updateq("spip_auteurs",array('webmestre'=>'oui'),'id_auteur='.intval($id_webmestre));
			}
		}
	}

	if ((count($status['ignore']) OR count($data['errors']))
	  AND defined('_MIGRATION_EMAIL_NOTIFY_IGNORE')
	  AND $email = _MIGRATION_EMAIL_NOTIFY_IGNORE){
		$sujet = "[Migration-ERR] ".$GLOBALS['meta']['adresse_site'];
		$texte = "";
		if (count($status['ignore']))
			$texte .= var_export($status['ignore'],true);
		if (count($data['errors']))
			$texte .= implode("\n",$data['errors']);
		job_queue_add('envoyer_mail','Erreur migration',array($email, $sujet, $texte),'inc/');
	}

	update_migration_depuis($status);
	finir_migration_status_depuis();

	// si on a pas d'upgrade a suivre, vidons les cache
	$version_installee = sql_getfetsel('valeur','spip_meta',"nom='version_installee'");
	if ($GLOBALS['spip_version']==$version_installee) {
		// supprimer les cache pour forcer la mise a jour du site
		include_spip('inc/invalideur');
		spip_log("purger le site","migration");
		supprime_invalideurs();
		@spip_unlink(_CACHE_RUBRIQUES);
		@spip_unlink(_CACHE_PIPELINES);
		@spip_unlink(_CACHE_PLUGINS_PATH);
		@spip_unlink(_CACHE_PLUGINS_OPT);
		@spip_unlink(_CACHE_PLUGINS_FCT);
		@spip_unlink(_CACHE_PLUGINS_VERIF);
		@spip_unlink(_CACHE_CHEMIN);
		#purger_repertoire(_DIR_CACHE,array('subdir'=>true));
		#purger_repertoire(_DIR_AIDE);
		purger_repertoire(_DIR_VAR.'cache-css');
		purger_repertoire(_DIR_VAR.'cache-js');
	}
	@spip_unlink(_FILE_META);

	// on renvoit le bilan pour affichage sur le site source
	return $status;
}
Esempio n. 2
0
function formulaires_assistant_migration_verifier_3_dist(){

	$erreurs = array();
	if (_request('direction')=='depuis'){
		// en cas d'abandon sur une migration "depuis", annuler
		if (_request('canceldepuis')){
			include_spip('inc/migration');
			$status = abandonner_migration_depuis();
			finir_migration_status_depuis();
			include_spip('inc/headers');
			$erreurs['message_erreur'] = _T('migration:titre_abandon_migration') . redirige_formulaire(generer_url_ecrire('migrer_depuis_fin'));
		}
		else {
			$s = lire_migration_depuis_status();
			if ($s AND $s['status']!=='ended')
				$erreurs['waiting'] = ' ';
		}
	}
	else {
		foreach(array('url_cible') as $obli)
			if (!_request($obli))
				$erreurs[$obli] = _T('info_obligatoire');
		if (strpos(_request('url_cible'),'+')===false)
			$erreurs['url_cible'] = _T('migration:erreur_url_incorrecte');
		if (!count($erreurs)){
			$url_cible = _request('url_cible');
			$url_cible = explode('+',$url_cible);
			$migration_key = array_pop($url_cible);
			$url_cible = implode('+',$url_cible);

			initialiser_migration_vers($url_cible,$migration_key,_request('quoi'));
			$connect = charger_fonction('connect','migration/envoi');
			$res = $connect($GLOBALS['meta']['adresse_site']);
			if ($res!==true){
				$erreurs['message_erreur'] = _T(is_string($res)?$res:'migration:erreur_echec_connexion_init');
			}
		}
	}

	return $erreurs;
}