/** * This function fill all lithology fields from Staging * $chrono_parent may containt all field referenced in $array_level separated by "," */ public function processWithMineralogyNode($xml_node, $object) { $mineral_parent = new Hstore(); // this array below is a mineral array ! I must change it as soon as I get the good list $array_level = array("phylum", "class", "order", "family", "genus", "sub_genus", "species", "sub_species"); foreach ($xml_node->childNodes as $mineral_node) { // text node doesn't interest us if ($mineral_node->nodeName == "#text") { continue; } // if a node have not more than one child, it's a node without childen if (in_array($mineral_node->nodeName, $array_level)) { $mineral_parent[$mineral_node->nodeName] = $mineral_node->nodeValue; } elseif ($mineral_node->nodeName == 'name') { $object['mineralogy_name'] = $mineral_node->nodeValue; } elseif ($mineral_node->nodeName == 'level') { $object['mineralogy_level_name'] = $mineral_node->nodeValue; } elseif ($mineral_node->nodeName == 'comments') { $this->complex_nodes['comments']['node'] = $mineral_node; $this->complex_nodes['comments']['notion_concerned'] = 'mineralogy'; } elseif ($mineral_node->nodeName == 'properties') { $this->complex_nodes['properties']['node'] = $mineral_node; $this->complex_nodes['properties']['notion_concerned'] = 'mineralogy'; } else { throw new Exception('Unknown node ' . $mineral_node->nodeName . ' in mineralogy'); } } $object['mineralogy_parents'] = $mineral_parent->export(); }