Location: PHPKode > projects > HuMo-gen > admin/include/gedcom.php
<?php

/**
 * This is the gedcom processing file for HuMo-gen.
 *
 * If you are reading this in your web browser, your server is probably
 * not configured correctly to run PHP applications!
 *
 * See the manual for basic setup instructions
 *
 * http://www.huubmons.nl/software/
 *
 * ----------
 *
 * Copyright (C) 2008-2009 Huub Mons,
 * Klaas de Winkel, Jan Maat, Jeroen Beemster, Louis Ywema, Theo Huitema,
 * René Janssen, Yossi Beck
 * and others.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

// *** Safety line ***
if (!defined('ADMIN_PAGE')){ exit; }

echo '<h1 align=center>'.$language["gedcom_name"].'</h1>';

//include("gedcom_asciihtml.php");
//include("gedcom_anselhtml.php");
//include("gedcom_ansihtml.php");
include("include/gedcom_asciihtml.php");
include("include/gedcom_anselhtml.php");
include("include/gedcom_ansihtml.php");

@set_time_limit(3000);

// *** Step 1 ***
if (isset($_POST['stap1'])){ $stap1=$_POST['stap1']; }
if (isset($_GET['stap1'])){ $stap1=$_GET['stap1']; }
if (isset($stap1)){
	echo $language["gedcom_intro"].'<br>';

	// *** Gedcom bestand uploaden ***
	print '<table class="humo" border="1" cellspacing="0" width="100%" bgcolor="#DDFD9B"><tr><td>';
	echo $language["gedcom_upload"].'<br>';

	if (isset($_POST['upload'])){
		if (file_exists("../../gedcom-bestanden")){ $map="../../gedcom-bestanden"; }
			else{ $map="."; }
		$bestand_nieuw = $map.'/' . basename($_FILES['uploadbestand']['name']);
		// *** Verplaatsen en weergeven of dat gelukt is of niet ***
		echo '<p><b>'.$bestand_nieuw.'<br>';
		if (move_uploaded_file($_FILES['uploadbestand']['tmp_name'], $bestand_nieuw))
			 echo $language["gedcom_succesful"].'</b>';
		else
			 echo $language["gedcom_failed"].'</b>';
	}
	else
	{
	 // *** Upload formulier ***
	 echo "<form name='uploadform' enctype='multipart/form-data' action='".$_SERVER['PHP_SELF']."' method='post'>";
		 echo '<input type="hidden" name="page" value="'.$page.'">';
		 echo '<input type="hidden" name="menu_admin" value="'.$menu_admin.'">';
		 echo '<input type="hidden" name="stamboom_id" value="'.$stamboom_id.'">';
		 echo "<input type='file' name='uploadbestand' />";
		 echo "<input type='hidden' name='upload' value='Uploaden' />";
		 echo "<p><input type='submit' name='stap1' value='Upload' />";
	 echo "</form>";
	}
	print '</td></tr></table>';

	if (isset($_POST['tree_prefix'])){
		$tree_prefix=$_POST['tree_prefix'];
		$_SESSION['tree_prefix']=$tree_prefix;
	}
	if (isset($_GET['tree_prefix'])){
		$tree_prefix=$_GET['tree_prefix'];
		$_SESSION['tree_prefix']=$tree_prefix;
	}

	print '<p>'.$language["gedcom_select"].'<br>';
	print '<form method="post" action="'.$_SERVER['PHP_SELF'].'" style="display : inline">';
	echo '<input type="hidden" name="page" value="'.$page.'">';
	echo '<input type="hidden" name="menu_admin" value="'.$menu_admin.'">';
	echo '<input type="hidden" name="stamboom_id" value="'.$stamboom_id.'">';
	
	$map=".";
	// *** Only needed for Huub's test server ***
	if (@file_exists("../../../gedcom-bestanden")){
		$map="../../../gedcom-bestanden";
	}
	// *** Only needed for Huub's test server (for component in Joomla) ***
	if (@file_exists("../../../../../../gedcom-bestanden")){
		$map="../../../../../../gedcom-bestanden";
	}
	$dh  = opendir($map);
	while (false !== ($filename = readdir($dh))) {
		if (strtolower(substr($filename, -3)) == "ged"){
			$filenames[]="$map/$filename";
		}
	}
	// *** Order gedcom files by alfabet ***
	if (isset($filenames)){ sort($filenames); }
	print '<select size="1" name="Bestand">';
	for ($i=0; $i<count($filenames); $i++){
		print '<option value="'.$filenames[$i].'">'.$filenames[$i].'</option>';
	}
	print '</select>';

	print '<p><INPUT type="checkbox" name="verwerkcontrole"> '.$language["gedcom_nonimported"]."<br>\n";
	print '<INPUT type="checkbox" name="verwerkweergave"> '.$language["gedcom_allnumbers"]."<br>\n";
	print '<p><input type="Submit" name="stap2" value="'.$language["gedcom_step"].' 2">';
	print '</form>';
}

// *** Stap 2 tabellen maken ***
if (isset($_POST['stap2'])){
	print '<b>'.$language["gedcom_create_tables"].'</b><br>';

	include("gedcom_tables.php");

	// *** VOORBEREIDEN VOORTGANGSBALK ***
	// *** persoon-gezin-bron-adres-tekst ***
	$voortgangsteller=0;
	$handle = fopen($_POST["Bestand"], "r");
	while (!feof($handle)) {
		$buffer = fgets($handle, 4096);
		//$buffer=rtrim($buffer,"\n\r");  // *** Strip newline ***
		//$buffer=ltrim($buffer," ");  // *** Strip starting spaces, for Pro-gen ***
		$buffer=trim($buffer); // *** Strip starting spaces for Pro-gen and ending spaces for Ancestry.

		if (substr($buffer, -6, 6)=='@ INDI'){ $voortgangsteller++; }
		if (substr($buffer, -5, 5)=='@ FAM'){ $voortgangsteller++; }
		if (substr($buffer, 0, 3)=='0 @' AND substr($buffer, -6, 6)=='@ SOUR'){ $voortgangsteller++; }
		if (substr($buffer, 0, 3)=='0 @' AND substr($buffer, -6, 6)=='@ RESI'){ $voortgangsteller++; }
		if (substr($buffer, 0, 3)=='0 @' AND substr($buffer, -6, 6)=='@ NOTE'){ $voortgangsteller++; }
		
		// Soort accent opslaan (ASCII, ANSI, of ANSEL)
		if (substr($buffer, 0, 6)=='1 CHAR'){ $accent=substr($buffer,7); }
	}

	$_SESSION['save_voortgangsteller']=$voortgangsteller;
	$_SESSION['save_voortgang']='0';
	$_SESSION['save_voortgang2']='0';
	// *** EINDE VOORBEREIDEN VOORTGANGSBALK ***

	// Variabelen op nul zetten (voor opnieuw inlezen na een time out)
	$_SESSION['save_pointer']='0';

	print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
	echo '<input type="hidden" name="page" value="'.$page.'">';
	echo '<input type="hidden" name="menu_admin" value="'.$menu_admin.'">';
	echo '<input type="hidden" name="stamboom_id" value="'.$stamboom_id.'">';

	print '<input type="hidden" name="Accenten" value="'.$accent.'">';
	if ($accent=='ASCII'){ echo '<b>'.$language["gedcom_ascii"].'</b>'; }
	if ($accent=='ANSI'){ echo '<b>'.$language["gedcom_ansi"].'</b>'; }
	if ($accent=='ANSEL'){ echo '<b>'.$language["gedcom_ansel"].'</b>'; }

	if (isset($_POST['verwerkcontrole'])){
		print '<input type="hidden" name="verwerkcontrole" value="'.$_POST['verwerkcontrole'].'">';
	}
	if (isset($_POST['verwerkweergave'])){
		print '<input type="hidden" name="verwerkweergave" value="'.$_POST['verwerkweergave'].'">';
	}

	// *** Aantal personen en gezinnen resetten ***
	$sql = mysql_query("UPDATE humo_trees
		SET tree_persons='', tree_families=''
		WHERE tree_prefix='".$_SESSION['tree_prefix']."'", $db);

	print '<input type="hidden" name="Bestand" value="'.$_POST['Bestand'].'">';
	print '<br><br><input type="Submit" name="stap3" value="'.$language["gedcom_step"].' 3">';
	print '</form>';
}

// ************************************************************************************************
// *** STAP 3 Gedcom bestand inlezen ***
// ************************************************************************************************
if (isset($_POST['stap3'])){

	// *** Weblog Class ***
	include('include/gedcom_cls.php');
	$gedcom_cls = New gedcom_cls;

	echo $language["gedcom_processgedcom"].'<br>';

	// *** bij sommige providers een timeout na 30 seconden, helaas veranderen ze dat niet. ***
	print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
	echo '<input type="hidden" name="page" value="'.$page.'">';
	echo '<input type="hidden" name="menu_admin" value="'.$menu_admin.'">';
	echo '<input type="hidden" name="stamboom_id" value="'.$stamboom_id.'">';
	
	print '<input type="hidden" name="Accenten" value="'.$_POST['Accenten'].'">';
	if (isset($_POST['verwerkcontrole'])){
		print '<input type="hidden" name="verwerkcontrole" value="'.$_POST['verwerkcontrole'].'">';
	}
	if (isset($_POST['verwerkweergave'])){
		print '<input type="hidden" name="verwerkweergave" value="'.$_POST['verwerkweergave'].'">';
	}

	print '<input type="hidden" name="Bestand" value="'.$_POST['Bestand'].'">';
	print '<input type="hidden" name="timeout" value="1">';
	print $language["gedcom_timeout"].' <input type="Submit" name="stap3" value="'.$language["gedcom_step"].' 3">';
	print '</form>';

$starttijd=time();
$deel="";
$buffer2="";

// *** VOORBEREIDEN VOORTGANGSBALK ***
	$voortgang=$_SESSION['save_voortgang'];
	$voortgang2=$_SESSION['save_voortgang2'];
	$voortgangsteller=$_SESSION['save_voortgangsteller'];

	// *** Ook na een timeout de voortgangsbalk weergeven ***
	if (isset($_POST['timeout'])){
		// *** Voortgangsbalk niet weergeven als alle items worden weergegeven ***
		if (!isset($_POST['verwerkweergave'])){
			// *** Voortgangsbalk weergeven ***
			echo '<hr width="500" align="left">';
			echo '<div id="balk"></div>.';   //puntje noodzakelijk, anders werkt de balk niet...
		}
	}
// *** EINDE VOORBEREIDEN VOORTGANGSBALK ***

// *** Bestand inlezen ***
$handle = fopen($_POST["Bestand"], "r");

// *** DEEEL VOOR HERHAALD INLEZEN NA TIME_OUT ***
//Set de pointer bij herhaald inlezen
if ($_SESSION['save_pointer']>0) {
	fseek($handle, $_SESSION['save_pointer']);
}
if (isset($_SESSION['save_genprogramma'])) {
	$genprogramma=$_SESSION['save_genprogramma'];
}
$level0='';
//************************************

require_once("include/ansel2unicode/ansel2unicode.php");
$a2u = new Ansel2Unicode();

function encode($buffer, $accenten){
	global $a2u;
	if ($accenten=="ASCII") {
		// These methods don't work :-(
		//$buffer=iconv("ASCII","UTF-8//IGNORE//TRANSLIT",$buffer);
		//$buffer=utf8_encode($buffer);

		// It looks like this is the only method that alway works:
		// Step 1: convert ASCII to html entities.
		$buffer=asciihtml($buffer);
		// Step 2: convert entities to UTF-8.
		$buffer = html_entity_decode($buffer, ENT_QUOTES, 'UTF-8');
	}
	if ($accenten=="ANSEL") {
		$buffer=$a2u->convert($buffer);		

		// *** Method below is a lot faster, but accent characters are a problem ***
		//$buffer=asciihtml($buffer);
		//$buffer=anselhtml($buffer);
		//$buffer = html_entity_decode($buffer, ENT_QUOTES, 'UTF-8');
	}
	if ($accenten=="ANSI") {
		//$buffer=htmlentities($buffer,ENT_QUOTES,'ISO-8859-1'); 
		//$buffer=ansihtml($buffer);
		$buffer=iconv("windows-1252","UTF-8",$buffer);

		//$buffer=iconv("windows-1252","UTF-8//IGNORE//TRANSLIT",$buffer);
	}
	if ($accenten=="UTF-8") {
		// *** No conversion needed ***
	}
	$buffer=addslashes($buffer);
	return $buffer;
}

while (!feof($handle)) {
	$buffer = fgets($handle, 4096);
	$buffer=rtrim($buffer,"\n\r");  //newline strippen
	$buffer=ltrim($buffer," ");  // *** Strip starting spaces, for Pro-gen ***

	// *** Strip all spaces for Ancestry gedcom ***
	if ( isset($genprogramma) AND $genprogramma=='Ancestry.com Family Trees'){
		$buffer=rtrim($buffer," ");
	}

	$opslaan="";
	if ( substr($buffer, 0, 3)=='0 @' OR $buffer=="0 TRLR"){ $opslaan=1; }

	// *** OPSLAAN ***
	if ($opslaan){
		if ($deel=="persoon"){
			$buffer2=encode($buffer2, $_POST["Accenten"]);
			$gedcom_cls -> persoon($buffer2);

			//waarde van pointer in bestand voor herhaald inlezen na timeout
			$pointer=ftell($handle);
			$_SESSION['save_pointer']=$pointer;

			$deel="";
			$buffer2="";
			$voortgang++;  // *** voortgangsbalk ***
			$_SESSION['save_voortgang']=$voortgang;
		}

		if ($deel=="gezin"){
			$buffer2=encode($buffer2, $_POST["Accenten"]);
			$gedcom_cls -> gezin($buffer2);

			//waarde van pointer in bestand voor herhaald inlezen na timeout
			$pointer=ftell($handle);
			$_SESSION['save_pointer']=$pointer;

			$deel="";
			$buffer2="";
			$voortgang++;  // *** voortgangsbalk ***
			$_SESSION['save_voortgang']=$voortgang;
		}

		if ($deel=="tekst"){
			$buffer2=encode($buffer2, $_POST["Accenten"]);
			$gedcom_cls -> tekst($buffer2);

			//waarde van pointer in bestand voor herhaald inlezen na timeout
			$pointer=ftell($handle);
			$_SESSION['save_pointer']=$pointer;

			$deel="";
			$buffer2="";
			$voortgang++;  // *** voortgangsbalk ***
			$_SESSION['save_voortgang']=$voortgang;
		}

		if ($deel=="bron"){
			$buffer2=encode($buffer2, $_POST["Accenten"]);
			$gedcom_cls -> bron($buffer2);

			//waarde van pointer in bestand voor herhaald inlezen na timeout
			$pointer=ftell($handle);
			$_SESSION['save_pointer']=$pointer;

			$deel="";
			$buffer2="";
			$voortgang++;  // *** voortgangsbalk ***
			$_SESSION['save_voortgang']=$voortgang;
		}

		if ($deel=="adres"){
			$buffer2=encode($buffer2, $_POST["Accenten"]);
			$gedcom_cls -> adres($buffer2);

			//waarde van pointer in bestand voor herhaald inlezen na timeout
			$pointer=ftell($handle);
			$_SESSION['save_pointer']=$pointer;

			$deel="";
			$buffer2="";
			$voortgang++;  // *** voortgangsbalk ***
			$_SESSION['save_voortgang']=$voortgang;
		}
	}

	// *** CONTROLE ***
	if (substr($buffer, -6, 6)=='@ INDI'){
		$deel="persoon";
		$buffer2="";
	}
	if (substr($buffer, -5, 5)=='@ FAM'){
		$deel="gezin";
		$buffer2="";
	}
	// *** O.a. Aldfaer tekst: 0 @N954@ NOTE ***
	if (substr($buffer, 0, 3)=='0 @' AND substr($buffer, -6, 6)=='@ NOTE'){
		$deel="tekst";
		$buffer2="";
	}
	if (substr($buffer, 0, 3)=='0 @' AND substr($buffer, -6, 6)=='@ SOUR'){
		$deel="bron";
		$buffer2="";
	}
	if (substr($buffer, 0, 3)=='0 @' AND substr($buffer, -6, 6)=='@ RESI'){
		$deel="adres";
		$buffer2="";
	}

	$buffer2=$buffer2.$buffer."\n";

	// *** Level0 opslaan ***
	if (substr($buffer, 0, 1)=='0'){ $level0=substr($buffer,2,6); }

	// *** 1 SOUR Haza-Data ***
	if ($level0=='HEAD' AND substr($buffer,2,4)=='SOUR'){
		$genprogramma=substr($buffer,7);
		$_SESSION['save_genprogramma']=$genprogramma;
		print "<br>Gedcombestand: <b>$genprogramma</b><br>";

		// *** Voortgangsbalk weergeven ***
		if (!isset($_POST['verwerkweergave'])){
			echo '<hr width="500" align="left">';
			echo '<div id="balk"></div>.';   //puntje noodzakelijk, anders werkt de balk niet...
		}
	}

	// *** Voortgangsbalk ***
	if (!isset($_POST['verwerkweergave']) AND $voortgang>($voortgangsteller/500)){
		$voortgang2++;
		$_SESSION['save_voortgang2']=$voortgang2;
		echo '<script type="text/javascript">var width='.$voortgang2.';</script>';
		echo '<script type="text/javascript" src="include/voortgang.js"></script>'."\n";
		$voortgang=0;
		$_SESSION['save_voortgang']=$voortgang;
	}

}
fclose($handle);

// *** Voortgangsbalk vol maken ***
if (!isset($_POST['verwerkweergave'])){
	echo '<script type="text/javascript">var width=500;</script>';
	echo '<script type="text/javascript" src="include/voortgang.js"></script>';
}

// *** Eindtijd weergeven ***
$eindtijd=time();
echo '<br>'.$language["gedcom_readintime"].': '.($eindtijd-$starttijd).' '.$language["gedcom_seconds"].'<br>';

//*** Weergeven van "niet verwerkte gedcom items" ***
if (isset($_POST['verwerkcontrole'])){
	print '<table class="humo" border="1" cellspacing="0">';
	print '<tr><th>nr.</th><th colspan=4>'.$language["gedcom_nonprocesseditems"].'</th></tr>';
	print '<tr><th><br></th><th>'.$language["gedcom_level"].' 0</th><th>'.$language["gedcom_level"].' 1</th><th>'.$language["gedcom_level"].' 2</th><th>'.$language["gedcom_text"].'</th></tr>';
	if (isset($nietverwerkt)){
		for ($i=0; $i<count($nietverwerkt);$i++){ echo '<tr><td>'.($i+1).'</td><td>'.$nietverwerkt[$i].'</td></tr>'."\n"; }
	}
	else{
		echo '<tr><td>0</td><td colspan=4>'.$language["gedcom_allprocessed"].'</td></tr>'."\n";
	}
	print '</table><br>';
}

print '<br><form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<input type="hidden" name="page" value="'.$page.'">';
echo '<input type="hidden" name="menu_admin" value="'.$menu_admin.'">';
echo '<input type="hidden" name="stamboom_id" value="'.$stamboom_id.'">';

print '<input type="hidden" name="genprogramma" value="'.$genprogramma.'">';
print '<input type="Submit" name="stap4" value="'.$language["gedcom_step"].' 4">';
print '</form>';
}

if (isset($_POST['stap4'])){

$starttijd=time();
$genprogramma=$_POST['genprogramma'];

print '<b>'.$language["gedcom_process_loose"].'</b><br>';

// *** bij sommige providers een timeout na 30 seconden, helaas veranderen ze dat niet. ***
print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<input type="hidden" name="page" value="'.$page.'">';
echo '<input type="hidden" name="menu_admin" value="'.$menu_admin.'">';
echo '<input type="hidden" name="stamboom_id" value="'.$stamboom_id.'">';

print '<input type="hidden" name="genprogramma" value="'.$_POST['genprogramma'].'">';
if (isset($_POST['verwerkcontrole'])){
	print '<input type="hidden" name="verwerkcontrole" value="'.$_POST['verwerkcontrole'].'">';
}
if (isset($_POST['verwerkweergave'])){
	print '<input type="hidden" name="verwerkweergave" value="'.$_POST['verwerkweergave'].'">';
}
print '<br>'.$language["gedcom_timeout"].' <input type="Submit" name="stap4" value="'.$language["gedcom_step"].' 4">';
print '</form><br>';

print '&gt;&gt;&gt; '.$language["gedcom_processing_loose"];

// *** Controle op o.a. Aldfaer teksten, die staan in de aparte tabel ***
$zoektekst=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."texts",$db);
$aantal_teksten = mysql_num_rows($zoektekst);
//echo 'AANTAL TEKSTEN'.$aantal_teksten;

// *** O.a. tekst bij naam verwerken. ***
$persoon=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."person",$db);
while ($personDb=mysql_fetch_object($persoon)){
	//*** Optie van Haza-data: tekst IN de naam op de plaats van een "*" ***
	if ($personDb->pers_name_text){
		$positie=strpos($personDb->pers_firstname, '*');
		//if ( $positie!== false AND $personDb->pers_name_text ){
		if ($positie!== false){
			//pers_name_text nog wijzigen in: werktekstomzet(pers_name_text)
			$pers_firstname=substr($personDb->pers_firstname,0,$positie).
				$personDb->pers_name_text.substr($personDb->pers_firstname,$positie+1);
			$pers_name_text='';
			$sql="UPDATE ".$_SESSION['tree_prefix']."person SET pers_firstname='$pers_firstname', pers_name_text=''
				WHERE pers_id=$personDb->pers_id";
			mysql_query($sql, $db) or die(mysql_error());
		}
		$positie=strpos($personDb->pers_lastname, '*');
		//if ( $positie!== false AND $personDb->pers_name_text ){
		if ($positie!== false){
			//pers_name_text nog wijzigen in: werktekstomzet(pers_name_text)
			$pers_lastname=substr( $personDb->pers_lastname,0,$positie).
				$personDb->pers_name_text.substr( $personDb->pers_lastname,$positie+1);
			$pers_name_text='';
			$sql="UPDATE ".$_SESSION['tree_prefix']."person SET pers_lastname='$pers_lastname', pers_name_text=''
				WHERE pers_id=$personDb->pers_id";
			mysql_query($sql, $db) or die(mysql_error());
		}
	}
}

print '<br>&gt;&gt;&gt; '.$language["gedcom_count_pers_fam"].' ';
// *** AANTAL personen en gezinnen berekenen ***
$persoon=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."person",$db);
$personen=mysql_num_rows($persoon);

$gezin=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."family",$db);
$gezinnen=mysql_num_rows($gezin);

$datum=date("Y-m-d H:i");
$sql="UPDATE humo_trees SET
tree_persons='".$personen."',
tree_families='".$gezinnen."',
tree_date='".$datum."'
WHERE tree_prefix='".$_SESSION['tree_prefix']."'";
mysql_query($sql,$db) or die(mysql_error());

// *************************************************************
// *** Bij meerdere stambomen een nieuwe zoektabel vullen ***
// *************************************************************
	
// *** Oude humo_zoeken tabel volledig verwijderen, wordt niet meer aangemaakt. ***
mysql_query("DROP TABLE humo_zoeken",$db);

// *************************************************************

//Verwerkingstijd weergeven:
$eindtijd=time();
echo '<br>'.$language["gedcom_processtime"].' '.($eindtijd-$starttijd).' '.$language["gedcom_seconds"].'<br>';
print $language["gedcom_noerrrors_ready"].'<br>';

print '<br>'.$language["gedcom_standard_gr_pswd"].'<br>';
print '<table class="humo" border="1" cellspacing="0" width="100%" bgcolor="#DDFD9B">';
print '<tr><th>'.$language["gedcom_group_capt"].'</th><th>'.$language["gedcom_username"].'</th><th>'.$language["gedcom_psswrd"].'</th></tr>';
print '<tr><td>beheer (admin)</td><td>beheer</td><td>humogen</td></tr>';
print '<tr><td>gast (guest)</td><td>gast</td><td>gast</td></tr>';
print '<tr><td>familie (family)</td><td>familie</td><td>humogen</td></tr>';
print '</table><br>';

print '<b>'.$language["gedcom_nowclick"].' <a href="../index.php">index.php</a> '.$language["gedcom_towatch_tree"].'</b><br>';

} //einde inlezen
?>
Return current item: HuMo-gen