Amélioration de la méthode de backup

This commit is contained in:
Fred Tempez 2024-12-05 18:11:03 +01:00
parent 114dcad072
commit 2d2bca5e23
2 changed files with 22 additions and 8 deletions

View File

@ -5,6 +5,7 @@
- Validation de la connexion au site grâce à l'envoi d'un code par email. L'option est activée depuis la configuration du site, onglet connexion. Elle s'active par groupe montant, exemple "éditeur" pour éditeurs et administrateurs. - Validation de la connexion au site grâce à l'envoi d'un code par email. L'option est activée depuis la configuration du site, onglet connexion. Elle s'active par groupe montant, exemple "éditeur" pour éditeurs et administrateurs.
- Optimisation du chargement des variables de classe. - Optimisation du chargement des variables de classe.
- Suppression de redondance de déclaration des charset. - Suppression de redondance de déclaration des charset.
- Méthode de backup optimisée.
**Corrections :** **Corrections :**
- Corrige un bug de changement de mot de passe pour les comptes non admin. - Corrige un bug de changement de mot de passe pour les comptes non admin.

View File

@ -197,14 +197,20 @@ class helper
public static function autoBackup($folder, $filter = ['backup', 'tmp']) public static function autoBackup($folder, $filter = ['backup', 'tmp'])
{ {
// Creation du ZIP // Création du nom de fichier ZIP
$baseName = str_replace('/', '', helper::baseUrl(false, false)); $baseName = str_replace('/', '', helper::baseUrl(false, false));
$baseName = empty($baseName) ? 'ZwiiCMS' : $baseName; $baseName = empty($baseName) ? 'ZwiiCMS' : $baseName;
$fileName = $baseName . '-backup-' . date('Y-m-d-H-i-s', time()) . '.zip'; $fileName = $baseName . '-backup-' . date('Y-m-d-H-i-s') . '.zip';
// Initialisation de l'archive ZIP
$zip = new ZipArchive(); $zip = new ZipArchive();
$zip->open($folder . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE); if ($zip->open($folder . $fileName, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== true) {
return false; // Retourne false si l'ouverture échoue
}
$directory = 'site/'; $directory = 'site/';
//$filter = array('backup','tmp','file');
// Récupération des fichiers et des dossiers
$files = new RecursiveIteratorIterator( $files = new RecursiveIteratorIterator(
new RecursiveCallbackFilterIterator( new RecursiveCallbackFilterIterator(
new RecursiveDirectoryIterator( new RecursiveDirectoryIterator(
@ -212,23 +218,30 @@ class helper
RecursiveDirectoryIterator::SKIP_DOTS RecursiveDirectoryIterator::SKIP_DOTS
), ),
function ($fileInfo, $key, $iterator) use ($filter) { function ($fileInfo, $key, $iterator) use ($filter) {
return $fileInfo->isFile() || !in_array($fileInfo->getBaseName(), $filter); // Inclure les fichiers ou les répertoires non filtrés
return $fileInfo->isFile() || ($fileInfo->isDir() && !in_array($fileInfo->getBaseName(), $filter));
} }
) )
); );
foreach ($files as $name => $file) {
// Ajout des fichiers à l'archive
foreach ($files as $file) {
if (!$file->isDir()) { if (!$file->isDir()) {
$filePath = $file->getRealPath(); $filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen(realpath($directory)) + 1); $relativePath = str_replace(DIRECTORY_SEPARATOR, '/', substr($filePath, strlen(realpath($directory)) + 1));
$zip->addFile($filePath, $relativePath); $zip->addFile($filePath, $relativePath);
} }
} }
// Fermeture de l'archive ZIP
$zip->close(); $zip->close();
return ($fileName);
return $fileName;
} }
/** /**
* Retourne la liste des modules installés dans un tableau composé * Retourne la liste des modules installés dans un tableau composé
* du nom réel * du nom réel