rendered paste bodyLe problème est dans cette boucle.
Quand on itère sur un $quantity > 1, tous les objets ajoutés ont le même ID que le dernier inséré. Voir en bas le 'dump'.
foreach ($add_float as $id => $quantity) {
for ($n=0; $n < $quantity; $n++) {
$new_from_float = $reverse_floating[$id];
$tmp=$new_from_float->get_obj();
$new_from_float->datas['ID'] = max($auths->get_max_elt_id(),max_elt($floating))+1;
$sub_elt = $new_from_float->datas['ID'];
if (($tmp['type'] == 'nufw') or ($tmp['type'] == 'link')){
$working_elt->add_elt($new_from_float);
# $used_desc=$_SESSION['used_desc'];
# check_objects_from_desc(&$ressources,$descs->elts[$used_desc]);
# print_r($working_elt);
$_SESSION['document']=serialize($expolicy);
# $auths=&$expolicy->auths;
print_r($working_elt);
$_SESSION['modified']=1;
# $_SESSION['need_acl_recalc']=1;
}else{
add_log($auth_bad_type);
}
}
}
Les fonctions sont très simples :
function add_elt($elt){
$this->elts[$elt->get_id()]=$elt;
}
function get_id(){
return($this->ID);
}
Le dump :
À la première itération, $n = 0 :
auth Object
(
[name] => mon_working_elt
[operator] =>
[ID] => 10
[elts] => Array
(
[23] => elt Object
(
[datas] => Array
(
[type] => link
[name] => _link
[ID] => 23
)
)
)
)
À la deuxième itération, $n = 0, l'ID du premier élément se trouve corrompu (!!)
auth Object
(
[name] => mon_working_elt
[operator] =>
[ID] => 10
[elts] => Array
(
[23] => elt Object
(
[datas] => Array
(
[type] => link
[name] => _link
[ID] => 24
)
)
[24] => elt Object
(
[datas] => Array
(
[type] => link
[name] => _link
[ID] => 24
)
)
)
)