Source for file Save_ABCD2.06.php

Documentation is available at Save_ABCD2.06.php

  1. <?php
  2. /**
  3. * extracting data from original specimen data provider, following ABCD2.06 format, using DOM
  4. * <br/><br/>
  5. * @author Gabriele Droege, DNA Bank Network <contact@dnabank-network.org>
  6. * @version 2.0
  7. * @package Input
  8. * @copyright Copyright © 2011 DNA Bank Network http://www.dnabank-network.org<br>The contents of this file are subject to the Mozilla Public License Version 1.1
  9. * @filesource
  10. * @license http://www.mozilla.org/MPL/ MPL
  11. */
  12.  
  13. $Units = $dom->getElementsByTagName('Unit');
  14.  
  15.  
  16.   foreach ($Units as $Unit) {
  17.  
  18.     $UnitID = $Unit->getElementsByTagName('UnitID');
  19.     $SourceInstitutionCode = $Unit->getElementsByTagName('SourceInstitutionID');
  20.     $SourceName = $Unit->getElementsByTagName('SourceID');
  21.     $CollectorsNo = $Unit->getElementsByTagName('CollectorsFieldNumber');
  22.  
  23.  //   echo "Unit ID: " . $UnitID->item(0)->nodeValue . "<br>";
  24.  //   echo "Source Institution: " . $SourceInstitutionCode->item(0)->nodeValue . "<br>";
  25.  //   echo "Source Collection: " . $SourceName->item(0)->nodeValue . "<br>";
  26.  
  27.     $sqlUnitID = addslashes($UnitID->item(0)->nodeValue);
  28.     $sqlSourceInstitutionCode = addslashes($SourceInstitutionCode->item(0)->nodeValue);
  29.     $sqlSourceName = addslashes($SourceName->item(0)->nodeValue);
  30.     $sqlCollectorsNo = addslashes($CollectorsNo->item(0)->nodeValue);
  31.  
  32. /*----------------------------GATHERING--------------------------------------------------------- */
  33.  
  34. $Gatherings = $Unit->getElementsByTagName('Gathering');
  35.  
  36.   foreach ($Gatherings as $Gathering) {
  37.     $CollectionDate = $Gathering->getElementsByTagName('DateTime');
  38.     $GatheringAgents = $Gathering->getElementsByTagName('Agents');
  39.     $Locality = $Gathering->getElementsByTagName('LocalityText');
  40.     $Country = $Gathering->getElementsByTagName('Country');
  41.     $NamedArea = $Gathering->getElementsByTagName('NamedArea');  //if (empty($Country))
  42.     $AreaName = $Gathering->getElementsByTagName('AreaName');    
  43.     $NearNamedPlaces = $Gathering->getElementsByTagName('NearNamedPlaces');  //if (empty($Country))
  44.     $Altitude = $Gathering->getElementsByTagName('Altitude');
  45.     
  46.     $Longitude = $Gathering->getElementsByTagName('LongitudeDecimal');
  47.     $Latitude = $Gathering->getElementsByTagName('LatitudeDecimal');
  48.     $SiteCoordinates = $Gathering->getElementsByTagName('SiteCoordinatesSets');  //if (empty($Longitude & Latitude))  
  49.  
  50.     foreach ($Altitude as $AltitudeDetail) {
  51.     
  52.     $AltitudeLowerValue = $AltitudeDetail->getElementsByTagName('LowerValue');
  53.     $AltitudeUpperValue = $AltitudeDetail->getElementsByTagName('UpperValue');
  54.     
  55.     if(!empty($AltitudeLowerValue))
  56.     {$sqlAltitude = $AltitudeLowerValue->item(0)->nodeValue;}
  57.     if(!empty($AltitudeUpperValue))
  58.     { $sqlAltitude .= $AltitudeUpperValue->item(0)->nodeValue;} 
  59.  
  60.     
  61.     }
  62.     
  63.     if($CollectionDate->item(0)->nodeValue != "")
  64.     {
  65.     foreach ($CollectionDate as $DateTime) {
  66.     
  67.     $GatheringDateText = $DateTime->getElementsByTagName('DateText');
  68.     $GatheringISODateTimeBegin = $DateTime->getElementsByTagName('ISODateTimeBegin');
  69.     $GatheringDayNumberBegin = $DateTime->getElementsByTagName('DayNumberBegin');
  70.     $GatheringTimeOfDayBegin = $DateTime->getElementsByTagName('ISOTimeOfDayBegin');    
  71.     $GatheringISODateTimeEnd = $DateTime->getElementsByTagName('ISODateTimeEnd');
  72.     $GatheringDayNumberEnd = $DateTime->getElementsByTagName('DayNumberEnd');
  73.     $GatheringTimeOfDayEnd = $DateTime->getElementsByTagName('TimeOfDayEnd');
  74.  
  75.  
  76.     if($GatheringDateText->item(0)->nodeValue != "") {
  77.  //   echo "Date: " . $GatheringDateText->item(0)->nodeValue . "<br>";
  78.     $sqlCollectionDate = addslashes($GatheringDateText->item(0)->nodeValue); }
  79.     else { $sqlCollectionDate = ""; }
  80.  
  81.     if($GatheringISODateTimeBegin->item(0)->nodeValue != "") {
  82.     $sqlCollectionDateMin = $GatheringISODateTimeBegin->item(0)->nodeValue; }
  83.     
  84.     if($GatheringDayNumberBegin->item(0)->nodeValue != "") {
  85.     $sqlCollectionDateMin .= " " . $GatheringDayNumberBegin->item(0)->nodeValue; }
  86.     
  87.     if($GatheringTimeOfDayBegin->item(0)->nodeValue != "") {
  88.     $sqlCollectionDateMin .= " " . $GatheringTimeOfDayBegin->item(0)->nodeValue; }
  89.     
  90.     if($GatheringISODateTimeEnd->item(0)->nodeValue != "") {
  91.     $sqlCollectionDateMax = $GatheringISODateTimeEnd->item(0)->nodeValue; }    
  92.     
  93.     if($GatheringDayNumberEnd->item(0)->nodeValue != "") {
  94.     $sqlCollectionDateMax .= " " . $GatheringDayNumberEnd->item(0)->nodeValue; }    
  95.     
  96.     if($GatheringTimeOfDayEnd->item(0)->nodeValue != "") {
  97.     $sqlCollectionDateMax .= " " . $GatheringTimeOfDayEnd->item(0)->nodeValue; }    
  98.     }
  99.     }
  100.   
  101.  
  102.     foreach ($GatheringAgents as $Collectors) {
  103.  
  104.       $PersonName = $Collectors->getElementsByTagName('GatheringAgent');
  105.       $AgentText = $Collectors->getElementsByTagName('GatheringAgentsText');   //if (empty($Collectors)
  106.       
  107.       
  108.       if(empty($PersonName->item(0)->nodeValue)) {
  109.  //       echo "Person: " . $PersonName->item(0)->nodeValue . "<br>"; 
  110.         $sqlPersonName = addslashes($AgentText->item(0)->nodeValue); 
  111.          }
  112.        else {
  113.         $sqlPersonName = addslashes($PersonName->item(0)->nodeValue); }
  114.  
  115.        }
  116.   
  117.  
  118. //      echo "Locality: " . $Locality->item(0)->nodeValue . "<br>"; 
  119.       $sqlLocality = addslashes($Locality->item(0)->nodeValue);
  120.  
  121.     foreach ($Country as $Countries) {
  122.  
  123.       $CountryName = $Countries->getElementsByTagName('Name');
  124.       $ISO2 = $Countries->getElementsByTagName('ISO3166Code');
  125.       
  126.       
  127.       if(empty($CountryName)) {
  128.  //       echo "Country2: " . $Country->item(0)->nodeValue . "<br>"; 
  129.         $sqlCountryName = addslashes($Country->item(0)->nodeValue); }
  130.         
  131.       else {
  132.   //      echo "Country: " . $CountryName->item(0)->nodeValue . "<br>";
  133.         $sqlCountryName = addslashes($CountryName->item(0)->nodeValue); }
  134.       
  135.  //       echo "ISO2: " . $ISO2->item(0)->nodeValue . "<br>";
  136.         $sqlISO2 = addslashes($ISO2->item(0)->nodeValue);  }
  137.       
  138.       if(empty($NamedArea)) {
  139.   //      echo "NearNamedPlaces: " . $NearNamedPlaces->item(0)->nodeValue . "<br>";
  140.         $sqlGatheringOther = addslashes($NearNamedPlaces->item(0)->nodeValue);
  141.         }
  142.        
  143.        $sqlNamedAreas = addslashes($AreaName->item(0)->nodeValue);
  144.        
  145.        if($sqlNamedAreas = 'Africa' or $sqlNamedAreas = 'Asia' or $sqlNamedAreas = 'Australia' or $sqlNamedAreas = 'Australia and Oceania' or $sqlNamedAreas = 'Europe' or $sqlNamedAreas = 'Middle America' or $sqlNamedAreas = 'South America' or $sqlNamedAreas = 'Middle America' or $sqlNamedAreas = 'Middle and South America' or $sqlNamedAreas = 'North America' or $sqlNamedAreas = ' Atlantic Ocean' or $sqlNamedAreas = 'Arctic Ocean' or $sqlNamedAreas = 'Indian Ocean' or $sqlNamedAreas = 'Pacific Ocean' or $sqlNamedAreas = 'Southern Ocean' or $sqlNamedAreas = 'Landlocked Sea')
  146.       
  147.       { $sqlContinentOrOcean = addslashes($AreaName->item(0)->nodeValue); }
  148.  
  149.         else {
  150.         
  151.  //       echo "NamedAreas: " . $NamedAreas->item(0)->nodeValue . "<br>";
  152.         $sqlGatheringOther = addslashes($NamedArea->item(0)->nodeValue);
  153.         }      
  154.       
  155.  //     echo "Longitude: " . $Longitude->item(0)->nodeValue . "<br>";
  156.       $sqlLongitude = $Longitude->item(0)->nodeValue;
  157.   //    echo "Latitude: " . $Latitude->item(0)->nodeValue . "<br>";
  158.       $sqlLatitude = $Latitude->item(0)->nodeValue;
  159.       
  160.  
  161.   } //foreach $Gatherings
  162.  
  163. /*----------------------------IDENTIFICATIONS--------------------------------------------------------- */
  164.   
  165.   $Identifications = $Unit->getElementsByTagName('Identification');
  166.   
  167.   foreach ($Identifications as $IndexIdentification => $Identification) {     // more than one Identification possible
  168.   
  169.      $TaxaIdentified = $Identification->getElementsByTagName('TaxonIdentified');
  170.      $Preferred = $Identification->getElementsByTagName('PreferredFlag');
  171.   
  172.     foreach ($TaxaIdentified as $TaxonIdentified) {
  173.   
  174.      $NameAuthorYearString = $TaxonIdentified->getElementsByTagName('FullScientificNameString');     // Name, Author, Year
  175.      $HigherTaxa = $TaxonIdentified->getElementsByTagName('HigherTaxon');
  176.      $ScientificNames = $TaxonIdentified->getElementsByTagName('ScientificName');
  177.  
  178.    //  echo "Name All: " . $NameAuthorYearString->item(0)->nodeValue . "<br>";
  179.      $sqlNameAuthorYearString[] = addslashes($NameAuthorYearString->item(0)->nodeValue);
  180.    //  echo "Preferred: " . $Preferred->item(0)->nodeValue . "<br>";
  181.      $sqlPreferredIdentificationFlag[] = $Preferred->item(0)->nodeValue;
  182.  
  183.       foreach ($HigherTaxa as $index => $HigherTaxon1) { // more than one HigherTaxon per Identification possible
  184.        
  185.          $HigherTaxon = $HigherTaxon1->getElementsByTagName('HigherTaxonName');
  186.          $TaxonRank = $HigherTaxon1->getElementsByTagName('HigherTaxonRank');
  187.        
  188.    //      echo "Higher Taxon: " .$HigherTaxon->item(0)->nodeValue." (".$TaxonRank->item(0)->nodeValue.")<br>";
  189.          $sqlHigherTaxon[] = $HigherTaxon->item(0)->nodeValue;
  190.          $sqlHigherTaxonRank[]  = $TaxonRank->item(0)->nodeValue;
  191.  
  192.       } //foreach $HugherTaxa
  193.     
  194.      foreach ($ScientificNames as $ScientificName) {
  195.     
  196.    //  $ScientificNamesAtomized = $ScientificName->getElementsByTagName('NameAtomised');
  197.  
  198. //     foreach ($ScientificNamesAtomized as $ScientificNameAtomized) {
  199.     
  200.       $Bacteria = $ScientificName->getElementsByTagName('Bacterial');
  201.       $Botany = $ScientificName->getElementsByTagName('Botanical');
  202.       $Zoology = $ScientificName->getElementsByTagName('Zoological');   
  203.       $Virology = $ScientificName->getElementsByTagName('Viral');         
  204.       
  205.  
  206.       if($Bacteria) {
  207.  
  208.         foreach ($Bacteria as $Bacterical) {
  209.       
  210.          $GenusBac = $Bacterical->getElementsByTagName('GenusOrMonomial');
  211.          $SubgenusBac = $Bacterical->getElementsByTagName('Subgenus');
  212.          $SpeciesEpithetBac = $Bacterical->getElementsByTagName('SpeciesEpithet');
  213.          $SubspeciesEpithetBac = $Bacterical->getElementsByTagName('SubspeciesEpithet');
  214.         
  215.   //       echo "Genus: " . $GenusBac->item(0)->nodeValue . "<br>";
  216.          $sqlGenus[] = $GenusBac->item(0)->nodeValue;
  217.   //       echo "Subgenus: " . $SubgenusBac->item(0)->nodeValue . "<br>";
  218.          $sqlSubgenus[] = $SubgenusBac->item(0)->nodeValue;         
  219.    //      echo "Spec.Epi: " . $SpeciesEpithetBac->item(0)->nodeValue . "<br>";
  220.          $sqlFirstEpithet[] = $SpeciesEpithetBac->item(0)->nodeValue;                  
  221.    //      echo "SspEpi: " . $SubspeciesEpithetBac->item(0)->nodeValue . "<br>";
  222.          $sqlSecondEpithet[] = $SubspeciesEpithetBac->item(0)->nodeValue;
  223.          if(empty($sqlGenus) and empty($sqlSubgenus) and empty($sqlFirstEpithet) and empty($sqlSubspecies))
  224.          {              
  225.    //      echo "Bacteria_All: " . $Bacteria->item(0)->nodeValue . "<br>"; //if (empty -> $GenusBac, $SubgenusBac, $SpeciesEpithetBac, $SubspeciesEpithetBac)      
  226.          $sqlName_All[] = $Bacteria->item(0)->nodeValue;    }     
  227.  
  228.         } //foreach $Bacteria
  229.       } //if($Bacteria)
  230.  
  231.       if($Botany) {
  232.       
  233.         foreach ($Botany as $Botanical) {
  234.         
  235.           $GenusBot = $Botanical->getElementsByTagName('GenusOrMonomial');
  236.           $FirstEpithet = $Botanical->getElementsByTagName('FirstEpithet');
  237.           $SecondEpithet = $Botanical->getElementsByTagName('InfraspecificEpithet');
  238.           $Rank = $Botanical->getElementsByTagName('Rank');
  239.           $HybridFlag = $Botanical->getElementsByTagName('HybridFlag');
  240.         
  241.    //       echo "Genus: " . $GenusBot->item(0)->nodeValue . "<br>";
  242.           $sqlGenus[] = $GenusBot->item(0)->nodeValue;         
  243.    //       echo "Spec.Epi: " . $FirstEpithet->item(0)->nodeValue . "<br>";
  244.           $sqlFirstEpithet[] = $FirstEpithet->item(0)->nodeValue;         
  245.   //        echo "Rank: " . $Rank->item(0)->nodeValue . "<br>";            
  246.           $sqlRank[] = $Rank->item(0)->nodeValue;                   
  247.    //       echo "Sec.Epi: " . $SecondEpithet->item(0)->nodeValue . "<br>";    
  248.           $sqlSecondEpithet[] = $SecondEpithet->item(0)->nodeValue;                   
  249.    //       echo "Hybrid: " . $HybridFlag->item(0)->nodeValue . "<br>";
  250.           $sqlHybridFlag[] = $HybridFlag->item(0)->nodeValue;           
  251.           if(empty($sqlGenus) and empty($sqlFirstEpithet) and empty($sqlRank) and empty($sqlSecondEpithet))
  252.           {        
  253.   //        echo "Botany_All: " . $Botany->item(0)->nodeValue . "<br>"; //if (empty -> $GenusBot, $FirstEpithet, $SecondEpithet, $Rank, $HybridFlag)      
  254.           $sqlName_All[] = $Botany->item(0)->nodeValue;   }
  255.       
  256.         } //foreach $Botany
  257.       } //if($Botany)
  258.       
  259.       if($Zoology) {
  260.       
  261.         foreach ($Zoology as $Zoological => $Zoo) {
  262.       
  263.           $GenusZoo = $Zoo->getElementsByTagName('GenusOrMonomial');
  264.           $SubgenusZoo = $Zoo->getElementsByTagName('Subgenus');
  265.           $SpeciesEpithetZoo = $Zoo->getElementsByTagName('SpeciesEpithet');
  266.           $SubspeciesEpithetZoo = $Zoo->getElementsByTagName('SubspeciesEpithet');
  267.  
  268.    //       echo "Genus: " .$GenusZoo->item(0)->nodeValue."<br>"; 
  269.           $sqlGenus[] = $GenusZoo->item(0)->nodeValue;                   
  270.    //       echo "Subgenus: " . $SubgenusZoo->item(0)->nodeValue . "<br>";
  271.           $sqlSubgenus[] = $SubgenusZoo->item(0)->nodeValue;         
  272.   //        echo "Spec.Epi: " . $SpeciesEpithetZoo->item(0)->nodeValue . "<br>"; 
  273.           $sqlFirstEpithet[] = $SpeciesEpithetZoo->item(0)->nodeValue;                   
  274.    //       echo "SspEpi: " . $SubspeciesEpithetZoo->item(0)->nodeValue . "<br>";
  275.           $sqlSecondEpithet[] = $SubspeciesEpithetZoo->item(0)->nodeValue;
  276.           if($sqlSecondEpithet) {
  277.             $sqlRank = "ssp."; }
  278.           if(empty($sqlGenus) and empty($sqlSubgenus) and empty($sqlFirstEpithet) and empty($sqlSecondEpithet))
  279.             {        
  280.     //        echo "Zoology_All: " . $Zoo->nodeValue . "<br>"; //if (empty -> $GenusZ, $SubgenusZ, $SpeciesEpithetZ, $SubspeciesEpithetZ)      
  281.             $sqlName_All[] = $Zoology->item(0)->nodeValue; }
  282.       
  283.         } //foreach $Zoology
  284.       } //if($Zoology)
  285.       
  286.       if($Virology)
  287.       {
  288.       
  289.         foreach ($Virology as $Viral) {
  290.         
  291.           $GenusV = $Viral->getElementsByTagName('GenusOrMonomial');
  292.         
  293.    //       echo "Genus: " . $GenusV->item(0)->nodeValue . "<br>";
  294.           $sqlGenus[] = $GenusV->item(0)->nodeValue;
  295.           if(empty($sqlGenus)) 
  296.           {              
  297.    //       echo "Virology_All: " . $Virology->item(0)->nodeValue . "<br>";
  298.           $sqlName_All[] = $Virology->item(0)->nodeValue; }
  299.       
  300.         } //foreach $Virology
  301.       } //if($Virology)
  302.     
  303.   //  } //foreach $ScientificNamesAtomized
  304.     
  305.     } //foreach $ScientificNames
  306.     
  307.   } //foreach $TaxaIdentified
  308.   
  309.   } //foreach $Identifications
  310.   
  311. /*----------------------------------------MULTI MEDIA OBJECTS -----------------------------*/
  312.   $MultiMediaObjects = $Unit->getElementsByTagName('MultiMediaObject');
  313.  
  314. foreach ($MultiMediaObjects as $IndexMultiMediaObjects => $MultiMediaObject) {     // more than one MultiMedia Object possible
  315.   
  316.      $FileURI = $MultiMediaObject->getElementsByTagName('FileURI');
  317.      $ProductURI = $MultiMediaObject->getElementsByTagName('ProductURI');
  318.      
  319.      $sqlFileURI[] = $FileURI->item(0)->nodeValue;
  320.      $sqlProductURI[] = $ProductURI->item(0)->nodeValue;
  321.      
  322.   }   // foreach $MultiMediaObjects
  323.   
  324.   
  325.   $TypeDesignations = $Unit->getElementsByTagName('NomenclaturalTypeDesignation');
  326.   
  327.   foreach ($TypeDesignations as $TypeDesignation) {
  328.   
  329.   $TypeStatus = $TypeDesignation->getElementsByTagName('TypeStatus');
  330.   $sqlTypeStatus = $TypeStatus->item(0)->nodeValue;
  331.   
  332.   }
  333.   
  334. }  // foreach $Units
  335.  
  336.  
  337. ?>

Documentation generated on Tue, 29 Nov 2011 10:45:10 +0100 by phpDocumentor 1.4.3