<?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> ';
// *********************************************************************
// ******** 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.'&id='.$gezin_id.'&hoofdpersoon='.$hoofdpersoon.'&datums='.$datums.'&achter='.$achter.'">'.$i.'</option>';
}
echo '<option';
if($max_generatie==50) { echo ' SELECTED';}
echo ' value="'.$_SERVER['PHP_SELF'].'?gennum=50&id='.$gezin_id.'&hoofdpersoon='.$hoofdpersoon.'&datums='.$datums.'&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 ' ('.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 ' ('.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 ' ('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 ' ('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 ' ('.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");
?>