summaryrefslogtreecommitdiff
path: root/controller/backup.php
blob: 13b68df2029ae041e25d50de12fafe6b7bf8dd86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
// controller/backup.php

function sauvegarder($from)
{
	$title = 'extraction des données';
	
	$chemin = "data/";
	$nomFichier = "melaineDATA.zip";

	// création ou remplacement d'une archive zip
	// une erreur est jetée si l'extension zip n'est pas activée
	try
	{
		$zip = new ZipArchive();
	}
	catch (Throwable $e)
	{
		echo($erreur);
		die();
	}

	// création du fichier zip vide
	// j'ai utilisé l'option ZipArchive::OVERWRITE,
	// ZipArchive::FL_OVERWRITE n'apparaît qu'avec PHP 8
	if ($zip->open($chemin . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE) {
	    exit("Impossible d'ouvrir le fichier <i>" . $chemin . $nomFichier . "</i>.\n");
	}
	
	// ajout des fichiers
	// chemin complet = data/"pages"/"html ou images"/"tous les fichiers"
    $zip->addGlob($chemin . '*/*/*', 0, array(''));
	$zip->close();

	// pour pouvoir manipuler le fichier depuis filezilla ou ssh
	chmod($chemin . $nomFichier, 0666); // écriture 4 chiffres

	require('view/backup.php');
}

function restaurer($from)
{
	$title = 'Restauration des données';

	$chemin = "data/";
	$nomFichier = "melaineDATA.zip";

	require('view/backup.php');
}

// inutile
function creerMelainePHP()
{
	$nomFichier = "melainePHP.zip";

    try
    {
        $Zip = new ZipArchive();
    }
    catch (Throwable $e) // absence de l'extension zip
    {
        echo($erreur);
        die();
    }

    if ($Zip->open('data/' . $nomFichier, ZipArchive::CREATE | ZipArchive::OVERWRITE)!==TRUE)
    {
        exit("Impossible d'ouvrir le fichier <i>" . $nomFichier . "</i>.\n");
    }

    // fichiers à la racine
    $Zip->addGlob('*.php', 0, array(''));
    $Zip->addGlob('.htaccess', 0, array(''));
    $Zip->addGlob('*.txt', 0, array(''));

    // tous les dossiers sauf data et .git
    $listeDossiers = array('model', 'view', 'controller', 'public', 'lib');
    foreach($listeDossiers as $path)
    {
    	// les deux lignes suivantes me dépassent un peu,
	    // mais ça marche et c'est comme ça qu'il faut faire
	    $directory = new RecursiveDirectoryIterator($path);
	    $iterator = new RecursiveIteratorIterator($directory);
	    
		foreach ($iterator as $info)
		{
			// chemins inutiles . et ..
			if($info->getFilename() != "." && $info->getFilename() != "..")
			{
				//var_dump($info->getPathname());
				$Zip->addGlob($info->getPathname(), 0, array(''));
			}
		}
    }

    $Zip->close();

    chmod('data/' . $nomFichier, 0644); // écriture 4 chiffres (octal)
}