[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / base / import_all.php
diff --git a/www/ecrire/base/import_all.php b/www/ecrire/base/import_all.php
new file mode 100644 (file)
index 0000000..1d62b02
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2011                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+include_spip('base/dump');
+
+/**
+ * On arrive ici depuis inc/admin
+ * - au lancement
+ * - puis apres chaque timeout avec dans ce cas $reprise=true
+ *
+ * import_all_debut() est appele la premiere fois et initialise le dump
+ * import_all_milieu() est appele a chaque retour ici
+ * quand on en sort,
+ *     - soit on relance pour la seconde etape de fusion
+ *  - soit on finit
+ *
+ * @param string $titre
+ * @param bool $reprise
+ */
+function base_import_all_dist($titre='', $reprise=false)
+{
+       if (!$titre) return; // anti-testeur automatique
+       if (!$reprise) import_all_debut();
+
+       $request = unserialize($GLOBALS['meta']['import_all']);
+
+       $archive = $request['dir'] . 
+       ($request['archive'] ? $request['archive'] : $request['archive_perso']);
+       // au rappel, on commence (voire on continue)
+       @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure
+
+       include_spip('inc/import');
+       @ignore_user_abort(1);
+
+       $commencer_page = charger_fonction('commencer_page', 'inc');
+       echo $commencer_page($titre, "accueil", "accueil");
+
+       echo debut_gauche('', true);
+
+       echo debut_droite('', true);
+       
+       $res = import_all_milieu($request, $archive);
+
+       // Cas particulier de la fusion/insertion :
+       // a la fin de la premiere passe on relance pour l'etape suivante
+       if (!$res AND $request['insertion'] == 'on') {
+               $request['insertion'] = 'passe2';
+               if ($request['url_site']
+               AND substr($request['url_site'],-1) != '/')
+                       $request['url_site'] .= '/';
+               ecrire_meta("import_all", serialize($request),'non');
+               import_all_debut();
+               $res = import_all_milieu($request, $archive);
+       }
+
+       echo $res, "</body></html>\n";
+
+       if ($charset = $GLOBALS['meta']['charset_restauration']) {
+                       ecrire_meta('charset', $charset);
+       }
+
+       detruit_restaurateur();
+       import_all_fin($request);
+       include_spip('inc/rubriques');
+       calculer_rubriques();
+       if (!$res) ecrire_acces();      // Mise a jour du fichier htpasswd
+       // revenir a l'accueil pour finir
+       affiche_progression_javascript('100 %', 0);
+}
+
+// http://doc.spip.org/@import_all_milieu
+function import_all_milieu($request, $archive)
+{
+       global $trans;
+       if ($request['insertion'] == 'passe2') {
+               include_spip('inc/import_insere');
+               $trans = translate_init($request);
+       } 
+       else
+               $trans = array();
+
+       return import_tables($request, $archive);
+}
+
+// http://doc.spip.org/@import_all_debut
+function import_all_debut() {
+       ecrire_meta("restauration_status", "0",'non');
+       ecrire_meta("restauration_status_copie", "0",'non');
+}
+
+// http://doc.spip.org/@import_all_fin
+function import_all_fin($request) {
+
+       effacer_meta("charset_restauration");
+       effacer_meta("charset_insertion");
+       effacer_meta("restauration_status");
+       effacer_meta("date_optimisation");
+       effacer_meta('restauration_version_archive');
+       effacer_meta('restauration_tag_archive');
+       effacer_meta('restauration_charset_sql_connexion');
+       effacer_meta('restauration_attributs_archive');
+       effacer_meta('restauration_table_prefix');
+       effacer_meta('restauration_table_prefix_source');
+       effacer_meta('vieille_version_installee');
+       effacer_meta('restauration_status_tables');
+       effacer_meta('restauration_recopie_tables');
+       if ($request['insertion'] == 'passe2') 
+               sql_drop_table("spip_translate");
+        
+}
+?>