Source for file Save_ABCD2.05.php

Documentation is available at Save_ABCD2.05.php

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

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