Skip to content
Extraits de code Groupes Projets
Valider 5043e4cd rédigé par esj's avatar esj
Parcourir les fichiers

Permettre aux administrateurs restreints de sauvegarder la base dans leur répertoire personnel

parent 0b9593a7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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')."&nbsp;";
}
else {
$fichier_defaut = 'dump.xml';
$texte_compresse = _T('texte_non_compresse')."&nbsp;";
}
if ($connect_toutes_rubriques) {
if ($flag_gz) {
$fichier_defaut = _SPIP_DUMP . '.gz';
$texte_compresse = _T('texte_compresse_ou_non')."&nbsp;";
} else {
$fichier_defaut = _SPIP_DUMP;
$texte_compresse = _T('texte_non_compresse')."&nbsp;";
}
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%\">";
......
......@@ -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
......
......@@ -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();
......
......@@ -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);
}
......
......@@ -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');
}
......
......@@ -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");
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter