Location: PHPKode > projects > HuMo-gen > report_outline.php
<?php
//=================================================================
//===            OUTLINE REPORT  - report_outline.php           ===
//=== by Yossi Beck - Nov 2008 - (on basis of Huub's gezin.php) ===
//=================================================================
$kop='Outline';
include("header.php");

if (isset($_GET['database'])){
	// *** Controle of de stamboom echt bestaat ***
	$datasql = mysql_query("SELECT * FROM humo_trees WHERE tree_prefix='".veilig($_GET['database'])."'",$db);
	if (@mysql_num_rows($datasql)==1) { $_SESSION['tree_prefix']=$_GET['database']; }
}

include("menu.php");

include("include/language_date.php");
include("include/language_event.php");
include("include/date_place.php");
include("include/process_text.php");
include('include/person_cls.php');
include("include/marriage_cls.php");
include("include/show_sources.php");

@set_time_limit(300);

// *** Gedcomnummer van gezin ***
$gezin_id=1; // *** 1e gezin weergeven als dit bestand rechtstreeks wordt aangeroepen. ***
if (isset($urlpart[1])){ $gezin_id=$urlpart[1]; }
if (isset($_GET["id"])){ $gezin_id=$_GET["id"]; }
if (isset($_POST["id"])){ $gezin_id=$_POST["id"]; }

// *** Gedcomnummer van persoon (backwards compatible gemaakt) ***
$hoofdpersoon=''; // *** Hoofdpersoon van een gezin ***
if (isset($urlpart[2])){ $hoofdpersoon=$urlpart[2];}
if (isset($_GET["hoofdpersoon"])){ $hoofdpersoon=$_GET["hoofdpersoon"]; }
if (isset($_POST["hoofdpersoon"])){ $hoofdpersoon=$_POST["hoofdpersoon"]; }

$datums=true;
if (isset($_GET["datums"])){ $datums=$_GET["datums"];}
if (isset($_POST["datums"])){ $datums=$_POST["datums"];}

$achter=true;
if (isset($_GET["achter"])){ $achter=$_GET["achter"];}
if (isset($_POST["achter"])){ $achter=$_POST["achter"];}  
 
// ******************************************************
// *** Maximaal weer te geven generaties in parenteel ***
// ******************************************************
$max_generatie=($humo_option["parenteel_generaties"]-1);
if (isset($_GET["gennum"])){ $max_generatie=$_GET["gennum"];}
if (isset($_POST["gennum"])){ $max_generatie=$_POST["gennum"];}

		echo '<div class="parenteel fonts">'.$language["outline_name"].'</div>';
		echo '<div class="naam centreren">';

// *********************************************************************    
// ******** keuze knop weergave: DATUMS WEL OF NIET TONEN   ************
// *********************************************************************
		//echo '<span class="knop">';
		print '<form method="POST" action="'.$uri_pad.'report_outline.php" style="display : inline;">';
		print '<input type="hidden" name="id" value="'.$gezin_id.'">';
		print '<input type="hidden" name="gennum" value="'.$max_generatie.'">';
		print '<input type="hidden" name="hoofdpersoon" value="'.$hoofdpersoon.'">';

		if ($datums==true){
			print '<input type="hidden" name="datums" value="0">';
			print '<input class="fonts" type="Submit" name="submit" value="'.$language["outline_date1"].'">';
		}
		else{
			print '<input type="hidden" name="datums" value="1">';
			print '<input class="fonts" type="Submit" name="submit" value="'.$language["outline_date2"].'">';
		}
		print '</form>';
		//print '</span>&nbsp;';

// *********************************************************************    
// ******** keuze knop weergave: DATUM ACHTER OF ONDER NAAM ************
// *********************************************************************
		//echo '<span class="knop">';
		print ' <form method="POST" action="'.$uri_pad.'report_outline.php" style="display : inline;">';
		print '<input type="hidden" name="id" value="'.$gezin_id.'">';
		print '<input type="hidden" name="gennum" value="'.$max_generatie.'">';
		print '<input type="hidden" name="hoofdpersoon" value="'.$hoofdpersoon.'">';

		if ($achter=="1"){
			print '<input type="hidden" name="achter" value="0">';
			print '<input type="Submit" class="fonts" name="submit" value="'.$language["outline_name1"].'">';
		}
		else{
			print '<input type="hidden" name="achter" value="1">';
			print '<input type="Submit" class="fonts" name="submit" value="'.$language["outline_name2"].'">';
		}
		print '</form>';
		//print '</span>';

// *********************************************************************    
// ******** keuze knop weergave: AANTAL GENERATIES TONEN    ************
// ********************************************************************* 
echo ' <span class="knop fonts">';
echo $language["outline_numbers"].': ';

echo '<select size=1 name="selectgennum" onChange="window.location=this.value;" style="display:inline;">';

for ($i=2;$i<20;$i++) {
	$nr_gen=$i-1; 
	echo '<option';
	if($nr_gen==$max_generatie) { echo ' SELECTED';}
	echo ' value="'.$_SERVER['PHP_SELF'].'?gennum='.$nr_gen.'&amp;id='.$gezin_id.'&amp;hoofdpersoon='.$hoofdpersoon.'&amp;datums='.$datums.'&amp;achter='.$achter.'">'.$i.'</option>';
}
echo '<option';
if($max_generatie==50) { echo ' SELECTED';}
echo ' value="'.$_SERVER['PHP_SELF'].'?gennum=50&amp;id='.$gezin_id.'&amp;hoofdpersoon='.$hoofdpersoon.'&amp;datums='.$datums.'&amp;achter='.$achter.'"> ALL </option>';

echo '</select>';
echo '</span></div><br>';

$gn=0;   // generatienummer   

// *************************************
// ****** FUNCTION OUTLINE *************  // recursive function 
// *************************************

function outline($gezin_id,$hoofdpersoon,$gn)  {
global $db, $datums, $achter, $max_generatie;
global $language, $dirmark1, $dirmark1;

$gezinnr=1; //*** verwerken van meerdere gezinnen ***

if($max_generatie<$gn) {return;}
$gn++;

// *** Tellen aantal huwelijken van man ***
// *** YB: wijzigingen gemaakt om vrouw als hoofdpersoon weer te geven ***
$gezin=mysql_query("SELECT fam_man, fam_woman FROM ".$_SESSION['tree_prefix'].'family WHERE fam_gedcomnumber="'.$gezin_id.'"',$db);
@$gezinDb=mysql_fetch_object($gezin) or die("Geen geldig gezinsnummer.");

$ouder1=''; $ouder2=''; $wissel_hoofdpersoon=false;
// *** Standaard hoofdpersoon is de vader ***
if ($gezinDb->fam_man){
	$ouder1=$gezinDb->fam_man;
	}
// *** Bij klikken op de moeder, wordt de moeder de hoofdpersoon ***
if ($gezinDb->fam_woman==$hoofdpersoon){
	$ouder1=$gezinDb->fam_woman;
	//$ouder2=$gezinDb->fam_man;
	$wissel_hoofdpersoon=true;
}

// *** Controle op gezin met ouder1: N.N. ***
if ($ouder1){
	// *** Gezinnen van man opslaan in array ***
	$persoon=mysql_query("SELECT pers_fams FROM ".$_SESSION['tree_prefix']."person
		WHERE pers_gedcomnumber='$ouder1'",$db);
	@$personDb=mysql_fetch_object($persoon);
	$aantalhuw=explode(";",$personDb->pers_fams);
	$nummer=substr_count($personDb->pers_fams, ";");
}
else{
	$aantalhuw[0]=$gezin_id;
	$nummer="0";
}


// *** Lus met meerdere huwelijken van hoofdpersoon ***
for ($ouder1huw=0; $ouder1huw<=$nummer; $ouder1huw++){
	$id=$aantalhuw[$ouder1huw];
	$gezin=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."family WHERE fam_gedcomnumber='$id'",$db);
	@$gezinDb=mysql_fetch_object($gezin);

	// *** Statistieken teller verhogen ***
	$Tel=$gezinDb->fam_counter+1;
	$sql="UPDATE ".$_SESSION['tree_prefix']."family SET fam_counter=$Tel WHERE fam_gedcomnumber='$id'";
	mysql_query($sql, $db) or die(mysql_error());

	// *** Privacy filter man en vrouw ***
	$persoonmn=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."person WHERE pers_gedcomnumber='$gezinDb->fam_man'",$db);
	@$persoonmnDb=mysql_fetch_object($persoonmn);
	$man_cls = New persoon_cls;
	$man_cls->construct($persoonmnDb);
	$levendmn=$man_cls->privacy;

	$persoonvr=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."person WHERE pers_gedcomnumber='$gezinDb->fam_woman'",$db);
	@$persoonvrDb=mysql_fetch_object($persoonvr);
	$vrouw_cls = New persoon_cls;
	$vrouw_cls->construct($persoonvrDb);
	$levendvr=$vrouw_cls->privacy;

	//$gezinlevend=privacyhuwelijk($gezinDb, $levendmn, $levendvr);
	$huw_cls = New huwelijk_cls;
	$huw_cls->construct($gezinDb, $levendmn, $levendvr);
	$gezinlevend=$huw_cls->privacy;

	// *************************************************************
	// *** Ouder1 (meestal de vader)                             ***
	// *************************************************************
	if ($gezinDb->fam_kind!='PRO-GEN'){  //onecht kind, vrouw zonder man
		if ($gezinnr==1){
			//*** Gegevens man weergeven ***

			$dir="";
			if($language["dir"]=="rtl") {
				$dir="rtl";    // in the following code calls the css indentation for rtl pages: "div.rtlsub2" instead of "div.sub2"
			}

			$indent=$dir.'sub'.$gn;  // hier wordt de indent bepaald voor de namen div class (sub1, sub2 enz. die in gedcom.css staan)

			echo '<div class="'.$indent.'">';
			echo '<b>'.$gn.' </b>';

			if ($wissel_hoofdpersoon==true){ 
				$vrouw_cls->naam_uitgebreid("Kind");
				if ($datums=="1" AND !$levendvr) {
					echo $dirmark1.',';
					if($achter==false) {echo '<br>';}
					echo ' &nbsp; ('.taaldatum($persoonvrDb->pers_birth_date).' - '.taaldatum($persoonvrDb->pers_death_date).')';
				}
			}
			else{
				$man_cls->naam_uitgebreid("Kind");
				if ($datums=="1" AND !$levendmn) {
					echo $dirmark1.',';
					if($achter==false) {echo '<br>';}
					echo ' &nbsp; ('.taaldatum($persoonmnDb->pers_birth_date).' - '.taaldatum($persoonmnDb->pers_death_date).')';
				}
			}
			echo '</div>';
		}
		else{  }   // leeg: geen tweede vermelding van hoofdpersoon in outline report
		$gezinnr++;
	} // *** einde controle PRO-GEN ***

	if ($gezinDb->fam_children!='LOS PERSOON'){
		// *************************************************************
		// *** Ouder2 (meestal de moeder)                            ***
		// *************************************************************
		echo '<div class="'.$indent.'" style="font-style:italic">';
		echo ' x '.$dirmark1;
		if ($wissel_hoofdpersoon==true){
			$man_cls->naam_uitgebreid("Kind");
			if ($datums=="1" AND !$levendmn) {
				echo $dirmark1.',';
				if($achter==false) {echo '<br>';}
				echo ' &nbsp; ('hide@address.com($persoonmnDb->pers_birth_date).' - 'hide@address.com($persoonmnDb->pers_death_date).')';
			}
		}
		else{
			$vrouw_cls->naam_uitgebreid("Kind");
			if ($datums=="1" AND !$levendvr) {
				echo $dirmark1.',';
				if($achter==false) {echo '<br>';}
				echo ' &nbsp; ('hide@address.com($persoonvrDb->pers_birth_date).' - 'hide@address.com($persoonvrDb->pers_death_date).')';
			}
		}
		echo '</div>';

		// *************************************************************
		// *** Kinderen                                              ***
		// *************************************************************
		if ($gezinDb->fam_children){  
			$teller=1;
			$aantalkinderen=explode(";",$gezinDb->fam_children);

			for ($i=0; $i<=substr_count("$gezinDb->fam_children", ";"); $i++){
				$kind=mysql_query("SELECT * FROM ".$_SESSION['tree_prefix']."person
					WHERE pers_gedcomnumber='$aantalkinderen[$i]'",$db);
				@$kindDb=mysql_fetch_object($kind);

				$levendkind="";
				$kind_cls = New persoon_cls;
				$kind_cls->construct($kindDb);
				$levendkind=$kind_cls->privacy;

				// *** NIEUW Parenteel opbouwen ***
				if ($kindDb->pers_fams){
					// *** 1e gezin van kind ***
					$linkkind=explode(";",$kindDb->pers_fams);
					$child1stfam=$linkkind[0];
					outline($child1stfam,$kindDb->pers_gedcomnumber,$gn);  // het recursieve gedeelte
				}
				else{    // kind zonder eigen gezin
					if($max_generatie>=$gn) {
						$kindgn=$gn+1;
						$kindindent=$dir.'sub'.$kindgn;
						echo '<div class="'.$kindindent.'">';
						echo '<b>'.$kindgn.' '.'</b>';
						echo $kind_cls->naam_uitgebreid("Kind");
						if ($datums=="1" AND !$levendkind) {
							echo $dirmark1.',';
							if($achter==false) {echo '<br>';}
							echo ' &nbsp; ('.taaldatum($kindDb->pers_birth_date).' - '.taaldatum($kindDb->pers_death_date).')';
						}
						echo '</div>';
					}
				}

				echo "\n";
				$teller++;
			}
		}

	} //einde lospersoon controle

} //Meerdere huwelijken weergeven

} // einde outline function

//******* HIER WORDT DE FUNCTION VOOR HET EERST OPGEROEPEN - DAARNA IS HET RECURSIVE ******

echo '<table class="humo outlinetable"><tr><td>';
outline($gezin_id, $hoofdpersoon, $gn);
echo '</td></tr></table>';

//mysql_close($db); //databaseverbinding sluiten.
include("footer.php");
?>
Return current item: HuMo-gen