[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / action / editer_document.php
index e16a562..bdde33e 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2014                                                *
+ *  Copyright (c) 2001-2016                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -126,6 +126,7 @@ function document_modifier($id_document, $set=false) {
        if ($champs['fichier'] // un plugin a pu interdire la modif du fichier en virant le champ
         AND $ancien_fichier // on avait bien note le nom du fichier avant la modif
         AND $ancien_fichier!==$champs['fichier'] // et il a ete modifie
+        AND !tester_url_absolue($ancien_fichier)
         AND @file_exists($f = get_spip_doc($ancien_fichier)))
                spip_unlink($f);
 
@@ -257,10 +258,15 @@ function medias_revision_document_parents($id_document, $parents=null, $ajout=fa
                        else $deja_parents[$lien['objet']][] = $lien['id_objet'];
        }
 
-       // verifier les droits d'associer
-       foreach($objets_parents as $objet=>$ids){
-               foreach($ids as $k=>$id){
-                       if (!autoriser('associerdocuments',$objet,$id)){
+       // trier les objets à traiter : ne pas prendre en compte ceux qui sont déjà associés ou qu'on n'a pas le droit d'associer
+       foreach ($objets_parents as $objet => $ids) {
+               foreach ($ids as $k => $id) {
+                       if ((
+                                       isset($deja_parents[$objet])
+                                       and in_array($id, $deja_parents[$objet])
+                               )
+                               or !autoriser('associerdocuments', $objet, $id)
+                       ) {
                                unset($objets_parents[$objet][$k]);
                        }
                }