Browse Source

Et voilà, on sait dupliquer tous les objets enfants en cascade (et les enfants des enfants etc), quelque soit les types d'objet, c'est magique !

svn/root/tags/v2.0.8
rastapopoulos@spip.org 5 years ago
parent
commit
588e7b9281
  1. 16
      action/dupliquer_objet.php

16
action/dupliquer_objet.php

@ -86,6 +86,7 @@ function action_dupliquer_objet_dist($objet = null, $id_objet = null) {
* - ajout_titre : ajouter une chaine à la fin du titre
* - dupliquer_liens : booléen précisant si on duplique les liens ou pas, par défaut oui
* - dupliquer_enfants : booléen précisant si on duplique les enfants ou pas, par défaut non
* - liens : liste d'objets liables dont on veut dupliquer les liens
* - liens_exclus : liste d'objets liables dont on ne veut pas dupliquer les liens
* @return int
* Retourne l'identifiant du duplicata
@ -172,7 +173,22 @@ function objet_dupliquer($objet, $id_objet, $modifications=array(), $options=arr
foreach ($enfants as $objet_enfant => $ids) {
if (is_array($ids)) {
foreach ($ids as $id_enfant) {
$modifications_enfant = array();
$options_enfant = $options;
// On enlève des options qui n'ont pas à venir du parent de départ
unset($options_enfant['champs']);
unset($options_enfant['ajout_titre']);
// Les modifications nécessaires pour mettre le bon parent suivant la méthode
if (isset($enfants_methodes[$objet_enfant]['champ'])) {
$modifications_enfant[$enfants_methodes[$objet_enfant]['champ']] = $id_objet_duplicata;
}
if (isset($enfants_methodes[$objet_enfant]['champ_type'])) {
$modifications_enfant[$enfants_methodes[$objet_enfant]['champ_type']] = $objet;
}
$id_enfant_duplicata = objet_dupliquer($objet_enfant, $id_enfant, $modifications_enfant, $options_enfant);
}
}
}

Loading…
Cancel
Save