Пример #1
0
 /**
  * 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();
 }