Valider 2262e986 rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

Dans `action_ajouter_un_document_dist` s'assurer qu'il n'y ait pas

deux entrées dans `spip_documents` avec la même valeur pour
`fichier`. Si cela risque d'être le cas, renommer le fichier avant
l'insertion en base.

Cela n'arrive que si $file correspond à un document qui est deja dans
`IMG` (typiquement lors de la duplication d'un logo avec `logo_modifier()`, lors de la création d'une traduction).
parent 03317f76
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+13 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -270,6 +270,19 @@ function action_ajouter_un_document_dist($id_document, $file, $objet, $id_objet,
	}

	include_spip('action/editer_document');

	// Sécurité : si jamais il existe deja une entrée dans la BDD avec ce chemin de document, suffixer le document.
	// Cela n'arrive que si $file indique un document qui se trouve déjà dans IMG.
	// Dans le cas contraire, la fonction copier_document() (qui est appelée plus haut dans fixer_fichier_upload()) s'est déjà chargé de vérifier l'absence de doublons.
	while (sql_getfetsel('fichier', 'spip_documents', 'fichier='.sql_quote($champs['fichier']))) {
		$infos_fichier = pathinfo($champs['fichier']);
		$tmp = tempnam(_DIR_TRANSFERT, $infos_fichier['filename']);
		deplacer_fichier_upload(_DIR_IMG.$champs['fichier'], $tmp);
		$champs['fichier'] = copier_document($infos_fichier['extension'], $infos_fichier['filename'], $tmp, $infos_fichier['dirname']);
		$champs['fichier'] = set_spip_doc($champs['fichier']);
		unlink($tmp);
	}

	// Installer le document dans la base
	if (!$id_document) {
		if ($id_document = document_inserer()) {