public function reload($projets, $project_id, $project_ref, Doctrine_Connection $conn = null, $openNodes) { if ($conn == null) { $conn = Doctrine_Manager::connection(); } $items = $projets->getElementsByTagName("ei_trees"); if ($items->length > 0) { //ya t-il des éléments à traiter? $ei_trees = $items->item(0)->getElementsByTagName("ei_tree"); $collection = new Doctrine_Collection("EiTree"); if ($ei_trees != null) { foreach ($ei_trees as $ei_tree) { $id = $ei_tree->getAttribute("id"); //recherche du profil en base if ($id != null) { $q = Doctrine_Core::getTable('EiTree')->findOneById($id); } if ($q && $q != null) { //si l'element existe , on fait une mise à jour $q->name = $ei_tree->getElementsByTagName("name")->item(0)->nodeValue; $q->type = $ei_tree->getElementsByTagName("type")->item(0)->nodeValue; $q->obj_id = $ei_tree->getElementsByTagName("obj_id")->item(0)->nodeValue; $q->ref_obj = $ei_tree->getElementsByTagName("ref_obj")->item(0)->nodeValue; $q->is_root = $ei_tree->getElementsByTagName("is_root")->item(0)->nodeValue; if ($ei_tree->getElementsByTagName("path")->length > 0) { $q->path = $ei_tree->getElementsByTagName("path")->item(0)->nodeValue; } $q->project_id = $project_id; $q->project_ref = $project_ref; $q->position = $ei_tree->getElementsByTagName("position")->item(0)->nodeValue; $q->root_id = $ei_tree->getElementsByTagName("root_id")->item(0)->nodeValue; $q->save($conn); } else { //l'élément n'existe pas encore, et dans ce cas on le crée $new_ei_tree = new EiTree(); $new_ei_tree->setId($id); $new_ei_tree->name = $ei_tree->getElementsByTagName("name")->item(0)->nodeValue; $new_ei_tree->type = $ei_tree->getElementsByTagName("type")->item(0)->nodeValue; $new_ei_tree->obj_id = $ei_tree->getElementsByTagName("obj_id")->item(0)->nodeValue; $new_ei_tree->ref_obj = $ei_tree->getElementsByTagName("ref_obj")->item(0)->nodeValue; $new_ei_tree->is_root = $ei_tree->getElementsByTagName("is_root")->item(0)->nodeValue; if ($ei_tree->getElementsByTagName("path")->length > 0) { $new_ei_tree->path = $ei_tree->getElementsByTagName("path")->item(0)->nodeValue; } $new_ei_tree->project_id = $project_id; $new_ei_tree->project_ref = $project_ref; $new_ei_tree->position = $ei_tree->getElementsByTagName("position")->item(0)->nodeValue; $new_ei_tree->root_id = $ei_tree->getElementsByTagName("root_id")->item(0)->nodeValue; $new_ei_tree->save($conn); if (isset($openNodes) && array_key_exists($new_ei_tree->getId(), $openNodes)) { foreach ($openNodes[$new_ei_tree->getId()] as $i => $opened) { $copy = new EiTreeOpenedBy(); $copy->setEiTreeId($id); $copy->setUserId($opened->getUserId()); $copy->setRefId($opened->getRefId()); $copy->save($conn); } } } } return 1; } return null; } }