Overview
Comment:Eviter une erreur de clé non unique dupliquée à cause d'un duplicata de hash, quand le formulaire javascript ne marche pas ça peut arriver, signalé par Terry.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c020f63920dc6273deb765a910179b3a35559df0
User & Date: bohwaz on 2015-10-10 08:11:16
Other Links: manifest | tags
Context
2015-10-10
08:18
Transmission catégorie en cours dans la pagination, fix [72bfc5da9a4556ded51d50971df2dbd576d87f47] check-in: 61819f034c user: bohwaz tags: trunk
08:11
Eviter une erreur de clé non unique dupliquée à cause d'un duplicata de hash, quand le formulaire javascript ne marche pas ça peut arriver, signalé par Terry. check-in: c020f63920 user: bohwaz tags: trunk
08:00
Oubli d'un champ dans la table rappel_envoyes, créant une erreur lors de la suppression de rappels, voici le patch qui corrige, merci à Nicolas pour le signalement. check-in: cf1e84cda4 user: bohwaz tags: trunk
Changes

Modified src/include/lib/Garradin/Fichiers.php from [90ac58cb7c] to [fada28820d].

449
450
451
452
453
454
455

456
457



458
459
460
461
462
463
464

465
466
467
468
469
470
471

		$is_image = preg_match('/^image\//', $type);

		$hash = sha1_file($file['tmp_name']);
		$size = filesize($file['tmp_name']);

		$db = DB::getInstance();

		$db->exec('BEGIN;');




		$db->simpleInsert('fichiers_contenu', [
			'hash'		=>	$hash,
			'taille'	=>	(int)$size,
			'contenu'	=>	[\SQLITE3_BLOB, file_get_contents($file['tmp_name'])],
		]);

		$id_contenu = $db->lastInsertRowID();


		$db->simpleInsert('fichiers', [
			'id_contenu'	=>	(int)$id_contenu,
			'nom'			=>	$name,
			'type'			=>	$type,
			'image'			=>	(int)$is_image,
		]);







>


>
>
>
|
|
|
|
|
|
|
>







449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476

		$is_image = preg_match('/^image\//', $type);

		$hash = sha1_file($file['tmp_name']);
		$size = filesize($file['tmp_name']);

		$db = DB::getInstance();

		$db->exec('BEGIN;');

		// Il peut arriver que l'on renvoie ici un fichier déjà stocké, auquel cas, ne pas le re-stocker
		if (!($id_contenu = $db->simpleQuerySingle('SELECT id FROM fichiers_contenu WHERE hash = ?;', false, $hash)))
		{
			$db->simpleInsert('fichiers_contenu', [
				'hash'		=>	$hash,
				'taille'	=>	(int)$size,
				'contenu'	=>	[\SQLITE3_BLOB, file_get_contents($file['tmp_name'])],
			]);
			
			$id_contenu = $db->lastInsertRowID();
		}

		$db->simpleInsert('fichiers', [
			'id_contenu'	=>	(int)$id_contenu,
			'nom'			=>	$name,
			'type'			=>	$type,
			'image'			=>	(int)$is_image,
		]);