From 5043e4cd7e7d7c4191e3060a3aad9280047f9a8b Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sat, 3 Jun 2006 22:29:13 +0000 Subject: [PATCH] =?UTF-8?q?Permettre=20aux=20administrateurs=20restreints?= =?UTF-8?q?=20de=20sauvegarder=20la=20base=20dans=20leur=20r=C3=A9pertoire?= =?UTF-8?q?=20personnel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/exec/admin_tech.php | 95 ++++++++++++++++++----------------- ecrire/exec/configuration.php | 3 +- ecrire/exec/export_all.php | 40 +++++++++------ ecrire/inc/admin.php | 28 ++++++++--- ecrire/inc/boutons.php | 4 +- ecrire/inc/utils.php | 1 + 6 files changed, 99 insertions(+), 72 deletions(-) diff --git a/ecrire/exec/admin_tech.php b/ecrire/exec/admin_tech.php index 43dbc16d27..7dc7a07a7c 100644 --- a/ecrire/exec/admin_tech.php +++ b/ecrire/exec/admin_tech.php @@ -16,65 +16,69 @@ include_spip('inc/presentation'); function exec_admin_tech_dist() { - global $connect_statut, $connect_toutes_rubriques, $couleur_foncee, $flag_gz, $options; + global $connect_statut, $connect_login, $connect_toutes_rubriques, $couleur_foncee, $flag_gz, $options; -debut_page(_T('titre_admin_tech'), "administration", "base"); + debut_page(_T('titre_admin_tech'), "administration", "base"); + echo "<br />"; -echo "<br>"; - -if ($options == "avancees") { - echo "<br><br>"; - gros_titre(_T('titre_admin_tech')); - barre_onglets("administration", "sauver"); -} - - -debut_gauche(); - -debut_boite_info(); - -echo _T('info_gauche_admin_tech'); - -fin_boite_info(); - -debut_droite(); - -if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) { + if ($connect_statut != '0minirezo' ){ echo _T('avis_non_acces_page'); fin_page(); exit; + } + + if ($options == "avancees") + { + echo "<br /><br />"; + gros_titre(_T('titre_admin_tech')); + if ($connect_toutes_rubriques) { + barre_onglets("administration", "sauver"); + debut_gauche(); + debut_boite_info(); + echo _T('info_gauche_admin_tech'); + fin_boite_info(); + $file = joli_repertoire(_DIR_SESSIONS . _SPIP_DUMP); + $zfile = joli_repertoire(_DIR_SESSIONS . _SPIP_DUMP . '.gz'); + $dir = joli_repertoire(_DIR_SESSIONS); + } else { + debut_gauche(); + $dir = _DIR_TRANSFERT . $connect_login . '/'; + $file = joli_repertoire($dir . _SPIP_DUMP); + $zfile = joli_repertoire($dir . _SPIP_DUMP . '.gz'); + $dir = joli_repertoire($dir); + } } + debut_droite(); + // // Sauvegarde de la base // -debut_cadre_relief(); - -echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 WIDTH=\"100%\">"; -echo "<TR><TD BGCOLOR='$couleur_foncee' BACKGROUND=''><B>"; -echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3 COLOR='#FFFFFF'>"; -echo _T('texte_sauvegarde')."</FONT></B></TD></TR>"; - -echo "<tr><td class='serif'>"; + debut_cadre_relief(); - echo generer_url_post_ecrire("export_all", "reinstall=non"), + echo "<TABLE BORDER='0' CELLSPACING='0' CELLPADDING='5' WIDTH=\"100%\">", + "<tr><td BGCOLOR='", $couleur_foncee, "' background=''><b>", + "<font face='Verdana,Arial,Sans,sans-serif' size='3' color='#FFFFFF'>", + _T('texte_sauvegarde'), + "</font></b></td></tr><tr><td class='serif'>", + generer_url_post_ecrire("export_all", "reinstall=non"), "\n<p align='justify'>", http_img_pack('warning.gif', _T('info_avertissement'), "width='48' height='48' align='right'"), - _T('texte_admin_tech_01', array('dossier'=>'<i>'.joli_repertoire(_DIR_SESSIONS).'</i>')), + _T('texte_admin_tech_01', array('dossier' => '<i>'.$dir.'</i>')), "<p>", _T('texte_admin_tech_02'); if ($flag_gz) { echo "\n<p align='justify'>"._T('texte_admin_tech_03')."<p>"; echo "\n<INPUT TYPE='radio' NAME='gz' VALUE='1' id='gz_on' CHECKED><label for='gz_on'> "._T('bouton_radio_sauvegarde_compressee', - array('fichier'=>'<b>'.joli_repertoire(_DIR_SESSIONS.'dump.xml.gz').'</b>'))." </label><BR>\n"; + array('fichier'=>'<b>'.$zfile.'</b>'))." </label><BR>\n"; echo "\n<INPUT TYPE='radio' NAME='gz' VALUE='0' id='gz_off'><label for='gz_off'> "._T('bouton_radio_sauvegarde_non_compressee', - array('fichier'=>'<b>'.joli_repertoire(_DIR_SESSIONS.'dump.xml').'</b>'))." </label><BR>\n"; + array('fichier'=>'<b>'.$file.'</b>'))." </label><BR>\n"; } else { - echo "\n<p align='justify'>"._T('texte_sauvegarde_compressee', array('fichier'=>'<b>'.joli_repertoire(_DIR_SESSIONS).'dump.xml</b>')); + echo "\n<p align='justify'>"._T('texte_sauvegarde_compressee', array('fichier'=>'<b>'.$file.'</b>')); echo "\n<INPUT TYPE='hidden' NAME='gz' VALUE='0' />"; } @@ -88,16 +92,16 @@ echo "</TABLE>"; // Restauration de la base // -if ($flag_gz) { - $fichier_defaut = 'dump.xml.gz'; - $texte_compresse = _T('texte_compresse_ou_non')." "; -} -else { - $fichier_defaut = 'dump.xml'; - $texte_compresse = _T('texte_non_compresse')." "; -} + if ($connect_toutes_rubriques) { + if ($flag_gz) { + $fichier_defaut = _SPIP_DUMP . '.gz'; + $texte_compresse = _T('texte_compresse_ou_non')." "; + } else { + $fichier_defaut = _SPIP_DUMP; + $texte_compresse = _T('texte_non_compresse')." "; + } -echo "<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=8 WIDTH=\"100%\">", + echo "<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=8 WIDTH=\"100%\">", "<TR><TD BGCOLOR='#EEEECC' BACKGROUND=''><B>", "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=3 COLOR='#000000'>", _T('texte_restaurer_base')."</FONT></B></TD></TR>", @@ -112,12 +116,13 @@ echo "<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=8 WIDTH=\"100%\">", "\n</td></tr>", "</TABLE>"; + } // // Lien vers la reparation // -if ($options == "avancees") { +if ($options == "avancees" AND $connect_toutes_rubriques) { $res = spip_mysql_version(); if ($res >= '3.23.14') { echo "<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=8 WIDTH=\"100%\">"; diff --git a/ecrire/exec/configuration.php b/ecrire/exec/configuration.php index 7893d0ee69..f1f9dc0e01 100644 --- a/ecrire/exec/configuration.php +++ b/ecrire/exec/configuration.php @@ -20,12 +20,13 @@ include_spip('inc/presentation'); include_spip('inc/config'); include_spip('inc/logos'); -if ($connect_statut != '0minirezo' OR !$connect_toutes_rubriques) { + if ($connect_statut != '0minirezo') { echo _T('avis_non_acces_page'); fin_page(); exit; } +if (!$connect_toutes_rubriques) redirige_par_entete(generer_url_ecrire('admin_tech','',true)); // // Modifications diff --git a/ecrire/exec/export_all.php b/ecrire/exec/export_all.php index dd043675c6..95aab298d8 100644 --- a/ecrire/exec/export_all.php +++ b/ecrire/exec/export_all.php @@ -53,14 +53,19 @@ else{ function exec_export_all_dist() { - global $archive, $debut_limit, $etape, $gz, $spip_version, $spip_version_affichee, $version_archive; + global $archive, $debut_limit, $etape, $gz, $spip_version, $spip_version_affichee, $version_archive, $connect_login, $connect_toutes_rubriques; - if (!$archive) { - if ($gz) $archive = "dump.xml.gz"; - else $archive = "dump.xml"; + if ($connect_toutes_rubriques) { + $dir = _DIR_SESSIONS; + } else { + $dir = _DIR_TRANSFERT . $connect_login . '/'; } - $partfile = $archive.".part"; - + + if (!$archive) { + if ($gz) $archive = _SPIP_DUMP . '.gz'; + else $archive = _SPIP_DUMP; + } + // utiliser une version fraiche des metas (ie pas le cache) include_spip('inc/meta'); lire_metas(); @@ -86,6 +91,9 @@ function exec_export_all_dist() install_debut_html(_T('info_sauvegarde')); + $file = $dir . $archive; + $partfile = $file . ".part"; + //if (!$etape) echo "<p><blockquote><font size=2>"._T('info_sauvegarde_echouee')." <a href='" . generer_url_ecrire("export_all","reinstall=non&etape=1&gz=$gz") . "'>"._T('info_procedez_par_etape')."</a></font></blockquote><p>"; $_fputs = ($gz) ? gzputs : fputs; @@ -99,12 +107,12 @@ function exec_export_all_dist() #ramasse_parties(_DIR_SESSIONS . $archive, $gz, _DIR_SESSIONS . $partfile); // et au cas ou (le rammase_parties s'arrete si un fichier de la serie est absent) // on ratisse large avec un preg_files - $liste = preg_files(_DIR_SESSIONS, "$archive\.part\.[0-9]*"); + $liste = preg_files($file . ".part\.[0-9]*"); foreach($liste as $dummy) @unlink($dummy); echo _T("info_sauvegarde")."<br/>"; - $f = ($gz) ? gzopen(_DIR_SESSIONS . $archive, "wb") : fopen(_DIR_SESSIONS . $archive, "wb"); + $f = ($gz) ? gzopen($file, "wb") : fopen($file, "wb"); if (!$f) { echo _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .')); exit; @@ -114,9 +122,9 @@ function exec_export_all_dist() if ($gz) gzclose($f); else fclose($f); } - else{ + else{ // reprise echo _T("info_sauvegarde"). " (" . $status_dump[2] . ", " . $status_dump[3] . ")<br/>"; - $f = ($gz) ? gzopen(_DIR_SESSIONS . $archive, "ab") : fopen(_DIR_SESSIONS . $archive, "ab"); + $f = ($gz) ? gzopen($file, "ab") : fopen($file, "ab"); if (!$f) { echo _T('avis_erreur_sauvegarde', array('type'=>'.', 'id_objet'=>'. .')); exit; @@ -191,16 +199,16 @@ function exec_export_all_dist() } ob_flush();flush(); - ramasse_parties(_DIR_SESSIONS . $archive, $gz, _DIR_SESSIONS . $partfile); + ramasse_parties($file, $gz, $partfile); - $f = ($gz) ? gzopen(_DIR_SESSIONS . $archive, "ab") : fopen(_DIR_SESSIONS . $archive, "ab"); + $f = ($gz) ? gzopen($file, "ab") : fopen($file, "ab"); $_fputs ($f, build_end_tag("SPIP")."\n"); if ($gz) gzclose($f); else fclose($f); effacer_meta("status_dump"); ecrire_metas(); - echo "<p>"._T('info_sauvegarde_reussi_01')."</b><p>"._T('info_sauvegarde_reussi_02', array('archive' => '<b>'.joli_repertoire(_DIR_SESSIONS.$archive).'</b>'))." <a href='./'>"._T('info_sauvegarde_reussi_03')."</a> "._T('info_sauvegarde_reussi_04')."\n"; + echo "<p>"._T('info_sauvegarde_reussi_01')."</b><p>"._T('info_sauvegarde_reussi_02', array('archive' => '<b>'.joli_repertoire($file).'</b>'))." <a href='./'>"._T('info_sauvegarde_reussi_03')."</a> "._T('info_sauvegarde_reussi_04')."\n"; } else{ if (!($timeout = ini_get('max_execution_time')*1000)); @@ -215,12 +223,12 @@ function exec_export_all_dist() list($string,$status_dump)=export_objets($table, primary_index_table($table), $tables_for_link[$table],0, false, $i, _T("info_sauvegarde").", $table",$paquets); while ($string!=''){ if ($cpt == 0) - ramasse_parties(_DIR_SESSIONS . $archive, $gz, _DIR_SESSIONS . $partfile); + ramasse_parties($file, $gz, $partfile); // on ecrit dans un fichier generique - ecrire_fichier (_DIR_SESSIONS .$partfile, $string); + ecrire_fichier ($partfile, $string); // on le renomme avec un numero -> operation atomique en linux - rename(_DIR_SESSIONS .$partfile,_DIR_SESSIONS .$partfile.".$cpt"); + rename($partfile,$partfile.".$cpt"); $cpt ++; ecrire_meta("status_dump", implode("::",$status_dump)); #lire_metas(); diff --git a/ecrire/inc/admin.php b/ecrire/inc/admin.php index fa88b58a5d..1d18e47aa7 100644 --- a/ecrire/inc/admin.php +++ b/ecrire/inc/admin.php @@ -18,14 +18,20 @@ function fichier_admin($action) { } function debut_admin($form, $action, $commentaire='') { - global $connect_statut; + global $connect_login, $connect_statut, $connect_toutes_rubriques; if ((!$action) || ($connect_statut != "0minirezo")) { include_spip('inc/minipres'); minipres(_T('info_acces_refuse')); } - $fichier = fichier_admin($action); - if (@file_exists(_DIR_SESSIONS . $fichier)) { + if ($connect_toutes_rubriques) { + $dir = _DIR_SESSIONS; + } else { + $dir = _DIR_TRANSFERT . $connect_login . '/'; + + } + $signal = fichier_admin($action); + if (@file_exists($dir . $signal)) { spip_log ("Action admin: $action"); return true; } @@ -42,11 +48,11 @@ function debut_admin($form, $action, $commentaire='') { . "\n<p>" . _T('info_creer_repertoire') . "\n<p align='center'>\n<INPUT TYPE='text' NAME='fichier' CLASS='fondl' VALUE=\"". - $fichier + $signal . "\" size='30'>" . "\n<p>" . _T('info_creer_repertoire_2', - array('repertoire' => joli_repertoire(_DIR_SESSIONS))) + array('repertoire' => joli_repertoire($dir))) . "\n<p align='right'><INPUT TYPE='submit' VALUE='" . _T('bouton_recharger_page') . "' CLASS='fondo'>" @@ -54,9 +60,15 @@ function debut_admin($form, $action, $commentaire='') { } function fin_admin($action) { - $fichier = fichier_admin($action); - @unlink(_DIR_SESSIONS . $fichier); - @rmdir(_DIR_SESSIONS . $fichier); + global $connect_login, $connect_toutes_rubriques; + if ($connect_toutes_rubriques) { + $dir = _DIR_SESSIONS; + } else { + $dir = _DIR_TRANSFERT . $connect_login . '/'; + } + $signal = fichier_admin($action); + @unlink($dir . $signal); + @rmdir($dir . $signal); } diff --git a/ecrire/inc/boutons.php b/ecrire/inc/boutons.php index f2472ce388..55179498e9 100644 --- a/ecrire/inc/boutons.php +++ b/ecrire/inc/boutons.php @@ -68,8 +68,8 @@ function definir_barre_boutons() { $boutons_admin['statistiques_visites']= new Bouton('statistiques-48.png', 'icone_statistiques_visites'); } - if ($GLOBALS['connect_statut'] == '0minirezo' - AND $GLOBALS['connect_toutes_rubriques']) { + if ($GLOBALS['connect_statut'] == '0minirezo') { + $boutons_admin['configuration']= new Bouton('administration-48.png', 'icone_configuration_site'); } diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index f375a9d359..76ad7f5e3a 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -949,6 +949,7 @@ function spip_initialisation() { // qq chaines standard define('_ACCESS_FILE_NAME', '.htaccess'); define('_AUTH_USER_FILE', '.htpasswd'); + define('_SPIP_DUMP', 'dump.xml'); define('_DOCTYPE_ECRIRE', "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n"); -- GitLab