X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fprive%2Fformulaires%2Fediter_liens.php;h=b72ff91d953d7c5cbe422c3c6ab1ecd028c5de80;hp=eb68c9c85bac9111b0c7fcc9d2a926e2a5d61e27;hb=122c920eb07e3f665789f8734965b576e6c25515;hpb=226942065cd4f604eb464addf45a065c9e5bc916 diff --git a/www/prive/formulaires/editer_liens.php b/www/prive/formulaires/editer_liens.php index eb68c9c8..b72ff91d 100644 --- a/www/prive/formulaires/editer_liens.php +++ b/www/prive/formulaires/editer_liens.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2012 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -154,13 +154,18 @@ function formulaires_editer_liens_traiter_dist($a,$b,$c,$editable=true){ if (_request('annuler_oups') AND $oups = _request('_oups') AND $oups = unserialize($oups)){ - $objet_source = objet_type($table_source); - include_spip('action/editer_liens'); - foreach($oups as $oup) { - if ($objet_lien==$objet_source) - objet_associer(array($objet_source=>$oup[$objet_source]), array($objet=>$oup[$objet]),$oup); - else - objet_associer(array($objet=>$oup[$objet]), array($objet_source=>$oup[$objet_source]),$oup); + if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}","action",true)){ + $oups_objets($oups); + } + else { + $objet_source = objet_type($table_source); + include_spip('action/editer_liens'); + foreach($oups as $oup) { + if ($objet_lien==$objet_source) + objet_associer(array($objet_source=>$oup[$objet_source]), array($objet=>$oup[$objet]),$oup); + else + objet_associer(array($objet=>$oup[$objet]), array($objet_source=>$oup[$objet_source]),$oup); + } } # oups ne persiste que pour la derniere action, si suppression set_request('_oups'); @@ -184,20 +189,25 @@ function formulaires_editer_liens_traiter_dist($a,$b,$c,$editable=true){ } if ($supprimer){ - include_spip('action/editer_liens'); - $oups = array(); + if ($supprimer_objets = charger_fonction("editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}","action",true)){ + $oups = $supprimer_objets($supprimer); + } + else { + include_spip('action/editer_liens'); + $oups = array(); - foreach($supprimer as $k=>$v) { - if ($lien = lien_verifier_action($k,$v)){ - $lien = explode("-",$lien); - list($objet_source,$ids,$objet_lie,$idl) = $lien; - if ($objet_lien==$objet_source){ - $oups = array_merge($oups, objet_trouver_liens(array($objet_source=>$ids), array($objet_lie=>$idl))); - objet_dissocier(array($objet_source=>$ids), array($objet_lie=>$idl)); - } - else{ - $oups = array_merge($oups, objet_trouver_liens(array($objet_lie=>$idl), array($objet_source=>$ids))); - objet_dissocier(array($objet_lie=>$idl), array($objet_source=>$ids)); + foreach($supprimer as $k=>$v) { + if ($lien = lien_verifier_action($k,$v)){ + $lien = explode("-",$lien); + list($objet_source,$ids,$objet_lie,$idl) = $lien; + if ($objet_lien==$objet_source){ + $oups = array_merge($oups, objet_trouver_liens(array($objet_source=>$ids), array($objet_lie=>$idl))); + objet_dissocier(array($objet_source=>$ids), array($objet_lie=>$idl)); + } + else{ + $oups = array_merge($oups, objet_trouver_liens(array($objet_lie=>$idl), array($objet_source=>$ids))); + objet_dissocier(array($objet_lie=>$idl), array($objet_source=>$ids)); + } } } } @@ -205,17 +215,22 @@ function formulaires_editer_liens_traiter_dist($a,$b,$c,$editable=true){ } if ($ajouter){ - $ajout_ok = false; - include_spip('action/editer_liens'); - foreach($ajouter as $k=>$v){ - if ($lien = lien_verifier_action($k,$v)){ - $ajout_ok = true; - list($objet1,$ids,$objet2,$idl) = explode("-",$lien); - if ($objet_lien==$objet1) - objet_associer(array($objet1=>$ids), array($objet2=>$idl)); - else - objet_associer(array($objet2=>$idl), array($objet1=>$ids)); - set_request('id_lien_ajoute',$ids); + if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}","action",true)){ + $ajout_ok = $ajouter_objets($ajouter); + } + else { + $ajout_ok = false; + include_spip('action/editer_liens'); + foreach($ajouter as $k=>$v){ + if ($lien = lien_verifier_action($k,$v)){ + $ajout_ok = true; + list($objet1,$ids,$objet2,$idl) = explode("-",$lien); + if ($objet_lien==$objet1) + objet_associer(array($objet1=>$ids), array($objet2=>$idl)); + else + objet_associer(array($objet2=>$idl), array($objet1=>$ids)); + set_request('id_lien_ajoute',$ids); + } } } # oups ne persiste que pour la derniere action, si suppression