You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
La fonction permettant de sauvegarder les données ne fonctionne pas si on coche la case "Sauvegarder seulement la base de données (pas les fichiers associés : images, documents annexes...)".
J'ai résolu le problème en modifiant la méthode backupAction() du fichier /lodel/scripts/logic/class.data.php. Ligne 292, la variable $files_and_names est indéfinie (et donc vide) si on exporte que la base : elle n'est définie plus haut (lignes 262 à 289) que pour le cas de figure où on exporte la base + les fichiers associés.
Voici la méthode modifiée :
public function backupAction(&$context, &$error)
{
if(!C::get('adminlodel', 'lodeluser')) trigger_error("ERROR: you don't have the right to access this feature", E_USER_ERROR);
$context['importdir'] = C::get('importdir', 'cfg');
if (isset($context['backup'])) { // si on a demandé le backup
set_time_limit(0);
$site = C::get('site', 'cfg');
$outfile = "site-$site.sql";
$GLOBALS['tmpdir'] = $tmpdir = tmpdir(uniqid('sitebackup'));
$errors = array();
/* On fait le dump de la base de données */
$this->_dump($site, $tmpdir . DIRECTORY_SEPARATOR. $outfile, $errors);
if($errors) {
$error = $errors;
return 'backup';
}
// verifie que le fichier SQL n'est pas vide
if (!file_exists($tmpdir. DIRECTORY_SEPARATOR . $outfile) || filesize($tmpdir. DIRECTORY_SEPARATOR . $outfile) <= 0) {
$error['mysql'] = 'dump_failed';
return 'backup';
}
// zip le site et ajoute la base
$archivetmp = tempnam($tmpdir, 'lodeldump_'). '.zip';
$archivefilename = "site-$site-". date("dmy"). '.zip';
// // fichiers à exclure de l'archive
// $GLOBALS['excludes'] = $excludes = array(
// '#\.htaccess$#',
// '#index.html$#',
// '#^docannexe/image/tmpdir-.*$#',
// '#^docannexe/tmp.*$#'
// );
//
// // répertoires à inclure
// $sitedirs = array(
// 'lodel/icons',
// 'lodel/sources',
// 'docannexe/fichier',
// 'docannexe/file',
// 'docannexe/image',
// );
//
// // si sauvegarde des répertoires demandée (en + de la base)
//
// $files_to_zip = array();
//
// if (empty($context['sqlonly'])) {
// /* On créé la liste des fichiers à sauvegarder */
// $siteroot = realpath(SITEROOT) . DIRECTORY_SEPARATOR;
//
// foreach($sitedirs as $sitedir)
// {
// $files_to_zip = array_merge(
// $files_to_zip,
// array_filter(glob_recursive( $siteroot . $sitedir . DIRECTORY_SEPARATOR . "*"), 'is_file')
// );
// }
//
// /* Suppression des fichier à exclure */
// foreach($excludes as $exclude)
// {
// $files_to_zip = preg_grep($exclude, $files_to_zip, PREG_GREP_INVERT);
// }
//
// /* On définit les chemin dans le zip et dans le filesystem */
// $files_and_names = array(
// $tmpdir. DIRECTORY_SEPARATOR . $outfile => $outfile,
// );
// foreach($files_to_zip as $file)
// {
// $files_and_names[$file] = str_replace($siteroot, '', $file);
// }
// unset($files_to_zip);
// }
$files_and_names = array(
$tmpdir. DIRECTORY_SEPARATOR . $outfile => $outfile,
);
// si sauvegarde des répertoires demandée (en + de la base)
if (empty($context['sqlonly'])) {
// fichiers à exclure de l'archive
$GLOBALS['excludes'] = $excludes = array(
'#\.htaccess$#',
'#index.html$#',
'#^docannexe/image/tmpdir-.*$#',
'#^docannexe/tmp.*$#'
);
// répertoires à inclure
$sitedirs = array(
'lodel/icons',
'lodel/sources',
'docannexe/fichier',
'docannexe/file',
'docannexe/image',
);
$files_to_zip = array();
/* On créé la liste des fichiers à sauvegarder */
$siteroot = realpath(SITEROOT) . DIRECTORY_SEPARATOR;
foreach($sitedirs as $sitedir)
{
$files_to_zip = array_merge(
$files_to_zip,
array_filter(glob_recursive( $siteroot . $sitedir . DIRECTORY_SEPARATOR . "*"), 'is_file')
);
}
/* Suppression des fichier à exclure */
foreach($excludes as $exclude)
{
$files_to_zip = preg_grep($exclude, $files_to_zip, PREG_GREP_INVERT);
}
/* On définit les chemin dans le zip et dans le filesystem */
foreach($files_to_zip as $file)
{
$files_and_names[$file] = str_replace($siteroot, '', $file);
}
unset($files_to_zip);
}
/* On créé le zip dans $archivetmp */
$ok = create_zip_from_file_list($archivetmp, $files_and_names);
@unlink($tmpdir. DIRECTORY_SEPARATOR . $outfile);
if (!file_exists($archivetmp) || true !== $ok) {
trigger_error("ERROR: the zip command reported an error: «{$ok}».\nArchive: $archivetmp", E_USER_ERROR);
}
if($error) { // Pour avoir accès aux erreurs dans les templates
$context['error'] = $error;
}
if (operation($context['operation'], $archivetmp, $archivefilename, $context)) {
$context['success'] = 1;
return 'backup';
}
else {
$context['success'] = 1;
return 'backup';
}
return 'backup';
}
else {
return 'backup';
}
}
Est-il possible de corriger le code sur la branche master ?
Cordialement.
The text was updated successfully, but these errors were encountered:
Bonjour,
La fonction permettant de sauvegarder les données ne fonctionne pas si on coche la case "Sauvegarder seulement la base de données (pas les fichiers associés : images, documents annexes...)".
J'ai résolu le problème en modifiant la méthode backupAction() du fichier /lodel/scripts/logic/class.data.php. Ligne 292, la variable $files_and_names est indéfinie (et donc vide) si on exporte que la base : elle n'est définie plus haut (lignes 262 à 289) que pour le cas de figure où on exporte la base + les fichiers associés.
Voici la méthode modifiée :
Est-il possible de corriger le code sur la branche master ?
Cordialement.
The text was updated successfully, but these errors were encountered: