Overview
Comment:Correction bug : les sauvegardes automatiques n'étaient pas nommées correctement
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 2a635037860a9ffca29c7badd5da97f62c9a2065
User & Date: bohwaz on 2013-12-19 03:17:21
Other Links: manifest | tags
Context
2013-12-19
03:27
Date un poil plus lisible + nom en français + message informant de la création d'une sauvegarde check-in: c87e9ecc9e user: bohwaz tags: trunk
03:17
Correction bug : les sauvegardes automatiques n'étaient pas nommées correctement check-in: 2a63503786 user: bohwaz tags: trunk
03:01
remove debug check-in: 089830013f user: bohwaz tags: trunk
Changes

Modified src/include/class.sauvegarde.php from [0f64cbe808] to [8306a0b11d].

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
..
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
	/**
	 * Renvoie la liste des fichiers SQLite sauvegardés
	 * @param  boolean $auto Si true ne renvoie que la liste des sauvegardes automatiques
	 * @return array 		 Liste des fichiers
	 */	
	public function getList($auto = false)
	{
		$ext = $auto ? '\d+' . preg_quote('.auto.sqlite') : 'sqlite';

		$out = array();
		$dir = dir(GARRADIN_DATA_ROOT);

		while ($file = $dir->read())
		{
			if ($file[0] != '.' && is_file(GARRADIN_DATA_ROOT . '/' . $file) 
................................................................................
	 * Crée une nouvelle sauvegarde
	 * @param  boolean $auto Si true le nom de fichier sera celui de la sauvegarde automatique courante,
	 * sinon le nom sera basé sur la date (sauvegarde manuelle)
	 * @return string Le nom de fichier de la sauvegarde ainsi créée
	 */
	public function create($auto = false)
	{
		$backup = str_replace('.sqlite', ($auto ? '.1.auto' : date('.Y-m-d-H-i')) . '.sqlite', GARRADIN_DB_FILE);
		copy(GARRADIN_DB_FILE, $backup);
		return basename($backup);
	}

	/**
	 * Effectue une rotation des sauvegardes automatiques
	 * association.1.auto.sqlite deviendra association.2.auto.sqlite par exemple
	 * @return boolean true
	 */
	public function rotate()
	{
		$config = Config::getInstance();
		$nb = $config->get('nombre_sauvegardes');

		$list = $this->getList(true);
		krsort($list);

		if (count($list) >= $nb)
		{
			$this->remove(key($list));
			$list = array_shift($list);
		}

		foreach ($list as $f=>$d)
		{
			$new = preg_replace_callback('!\.(\d+)\.auto\.sqlite$!', function ($m) {
				return (int) $m[1] + 1;
			}, $f);

			rename(GARRADIN_DATA_ROOT . '/' . $f, GARRADIN_DATA_ROOT . '/' . $new);
		}

		return true;
	}







|







 







|






|













|




|
|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
..
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
	/**
	 * Renvoie la liste des fichiers SQLite sauvegardés
	 * @param  boolean $auto Si true ne renvoie que la liste des sauvegardes automatiques
	 * @return array 		 Liste des fichiers
	 */	
	public function getList($auto = false)
	{
		$ext = $auto ? 'auto\.\d+\.sqlite' : 'sqlite';

		$out = array();
		$dir = dir(GARRADIN_DATA_ROOT);

		while ($file = $dir->read())
		{
			if ($file[0] != '.' && is_file(GARRADIN_DATA_ROOT . '/' . $file) 
................................................................................
	 * Crée une nouvelle sauvegarde
	 * @param  boolean $auto Si true le nom de fichier sera celui de la sauvegarde automatique courante,
	 * sinon le nom sera basé sur la date (sauvegarde manuelle)
	 * @return string Le nom de fichier de la sauvegarde ainsi créée
	 */
	public function create($auto = false)
	{
		$backup = str_replace('.sqlite', ($auto ? '.auto.1' : date('.Y-m-d-H-i')) . '.sqlite', GARRADIN_DB_FILE);
		copy(GARRADIN_DB_FILE, $backup);
		return basename($backup);
	}

	/**
	 * Effectue une rotation des sauvegardes automatiques
	 * association.auto.1.sqlite deviendra association.auto.2.sqlite par exemple
	 * @return boolean true
	 */
	public function rotate()
	{
		$config = Config::getInstance();
		$nb = $config->get('nombre_sauvegardes');

		$list = $this->getList(true);
		krsort($list);

		if (count($list) >= $nb)
		{
			$this->remove(key($list));
			array_shift($list);
		}

		foreach ($list as $f=>$d)
		{
			$new = preg_replace_callback('!\.auto\.(\d+)\.sqlite$!', function ($m) {
				return '.auto.' . ((int) $m[1] + 1) . '.sqlite';
			}, $f);

			rename(GARRADIN_DATA_ROOT . '/' . $f, GARRADIN_DATA_ROOT . '/' . $new);
		}

		return true;
	}