X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Faction%2Fexport_all.php;h=ca76e37447a04d821d7dfc3ad171b04a484a1775;hp=ec06d3c05732ef587a8dee9231dac8a9af2429f7;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;ds=sidebyside
diff --git a/www/ecrire/action/export_all.php b/www/ecrire/action/export_all.php
index ec06d3c..ca76e37 100644
--- a/www/ecrire/action/export_all.php
+++ b/www/ecrire/action/export_all.php
@@ -3,7 +3,7 @@
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
- * Copyright (c) 2001-2011 *
+ * Copyright (c) 2001-2014 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
@@ -22,87 +22,138 @@ function action_export_all_dist()
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
- @list(, $gz, $archive, $rub, $version) = explode(',', $arg);
+ @list(, , $archive, $rub) = explode(',', $arg);
$meta = base_dump_meta_name($rub);
+ $file = ramasse_parties($rub, $archive, $meta);
+ $size = !$file ? 0 : @(!file_exists($file) ? 0 : filesize($file));
+ $metatable = $meta . '_tables';
+ $tables = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array();
+ effacer_meta($metatable);
+ effacer_meta($meta);
+ utiliser_langue_visiteur();
+ if (!$size)
+ $corps = _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .'));
+ else {
+ $corps = export_all_report_size($file, $rub, $size, generer_url_ecrire())
+ . export_all_report_tables($tables);
+ }
+ include_spip('inc/minipres');
+ echo minipres(_T('info_sauvegarde'), $corps);
+}
+
+function export_all_rename($nom, $subdir)
+{
+ $dir = dirname($subdir);
+ $dest = $dir . '/' . $nom;
+ if (file_exists($dest)) {
+ $n = 1;
+ while (@file_exists($new = "$dir/$n-$nom")) $n++;
+ spip_log("renomme vieux $dest en $new");
+ @rename($dest, $new);
+ }
+ return $dest;
+}
+
+// Concatenation des tranches
+
+// http://doc.spip.org/@ramasse_parties
+function ramasse_parties($rub, $archive, $meta)
+{
$dir = base_dump_dir($meta);
- $file = $dir . $archive;
+ $files = preg_files($dir . $archive . ".part_[0-9]+_[0-9]+[.gz]?");
+ if (!$files) return false;
+ $ok = true;
+ $files_o = array();
+ $but = export_all_rename($archive, $dir);
+ // creer l'en tete du fichier
+ ecrire_fichier($but, export_entete(_VERSION_ARCHIVE),false);
+ foreach($files as $f) {
+ $contenu = "";
+ if (lire_fichier ($f, $contenu)) {
+ if (!ecrire_fichier($but,$contenu,false,false))
+ { $ok = false; break;}
+ }
+ spip_unlink($f);
+ $files_o[]=$f;
+ }
+ ecrire_fichier($but, export_enpied(),false,false);
+ spip_unlink($dir);
+ spip_log("concatenation " . join(' ', $files_o));
+ return $ok ? $but : false;
+}
- utiliser_langue_visiteur();
- export_all_fin($file, $meta, $rub);
+function export_all_end($meta, $archive){
+ $dir = base_dump_dir($meta);
+ $file = $dir . $archive;
}
-// http://doc.spip.org/@export_all_fin
-function export_all_fin($file, $meta, $rub)
+// http://doc.spip.org/@export_entete
+function export_entete($version_archive)
{
- global $spip_lang_left,$spip_lang_right;
+ return
+"<" . "?xml version=\"1.0\" encoding=\"".
+$GLOBALS['meta']['charset']."\"?".">\n" .
+"
'.joli_repertoire("$dir/$nom")." ($n)", 'titre' => "$titre"));
- }
- else
+ array('archive' => ':
'.joli_repertoire($dest)." ($n)", 'titre' => "$titre"));
+ } else
$titre = _T('info_sauvegarde_reussi_02',
- array('archive' => ':
'.joli_repertoire("$dir/$nom")." ($n)"));
+ array('archive' => ':
'.joli_repertoire($dest)." ($n)"));
- $corps = "
". + include_spip('inc/filtres'); + return "
". $titre . - " ". + " ". _T('info_sauvegarde_reussi_03') . " " ._T('info_sauvegarde_reussi_04') - . "
\n"; - - include_spip('inc/filtres'); - $corps .= "