function create_rel_array($gednr) { // creates array of ancestors of person with gedcom nr. $gednr global $dbh, $db_functions; $family_id = $gednr; $ancestor_id2[] = $family_id; $ancestor_number2[] = 1; $marriage_number2[] = 0; $generation = 1; $genarray_count = 0; // *** Loop ancestor report *** while (isset($ancestor_id2[0])) { unset($ancestor_id); $ancestor_id = $ancestor_id2; unset($ancestor_id2); unset($ancestor_number); $ancestor_number = $ancestor_number2; unset($ancestor_number2); unset($marriage_number); $marriage_number = $marriage_number2; unset($marriage_number2); // *** Loop per generation *** $kwcount = count($ancestor_id); for ($i = 0; $i < $kwcount; $i++) { if ($ancestor_id[$i] != '0') { $person_manDb = $db_functions->get_person($ancestor_id[$i]); $man_cls = new person_cls(); $man_cls->construct($person_manDb); $man_privacy = $man_cls->privacy; if (strtolower($person_manDb->pers_sexe) == 'm' and $ancestor_number[$i] > 1) { @($familyDb = $db_functions->get_family($marriage_number[$i])); // *** Use privacy filter of woman *** $person_womanDb = $db_functions->get_person($familyDb->fam_woman); $woman_cls = new person_cls(); $woman_cls->construct($person_womanDb); $woman_privacy = $woman_cls->privacy; // *** Use class for marriage *** $marriage_cls = new marriage_cls(); $marriage_cls->construct($familyDb, $man_privacy, $woman_privacy); $family_privacy = $marriage_cls->privacy; } //*** Show person data *** $genarray[$genarray_count][0] = $ancestor_id[$i]; $genarray[$genarray_count][1] = $generation - 1; $genarray_count++; // increase by one // *** Check for parents *** if ($person_manDb->pers_famc) { @($familyDb = $db_functions->get_family($person_manDb->pers_famc)); if ($familyDb->fam_man) { $ancestor_id2[] = $familyDb->fam_man; $ancestor_number2[] = 2 * $ancestor_number[$i]; $marriage_number2[] = $person_manDb->pers_famc; $genarray[][2] = $genarray_count - 1; // save array nr of child in parent array so we can build up ancestral line later } if ($familyDb->fam_woman) { $ancestor_id2[] = $familyDb->fam_woman; $ancestor_number2[] = 2 * $ancestor_number[$i] + 1; $marriage_number2[] = $person_manDb->pers_famc; $genarray[][2] = $genarray_count - 1; // save array nr of child in parent array so we can build up ancestral line later } } } } // loop per generation $generation++; } // loop ancestors return @$genarray; }
function person_data($person_kind, $id) { global $dbh, $db_functions, $tree_id, $dataDb, $user, $language, $humo_option, $family_id, $uri_path; global $family_expanded, $change_main_person; global $childnr, $screen_mode, $dirmark1, $dirmark2; global $templ_person; global $sect, $arial12; // *** RTF export *** unset($templ_person); $personDb = $this->personDb; $privacy = $this->privacy; // *** Settings for mobile version, show details in multiple lines *** if ($person_kind == "mobile") { $family_expanded = true; } // *** $personDb is empty by N.N. person *** if ($personDb) { $tree_prefix_quoted = $personDb->pers_tree_prefix; $db_functions->set_tree_prefix($tree_prefix_quoted); $process_text = ''; $temp = ''; //*** PRIVACY PART *** $privacy_filter = ''; if ($privacy) { if ($screen_mode == "mobile") { return __('PRIVACY FILTER'); } elseif ($screen_mode != "PDF") { $privacy_filter = ' ' . __('PRIVACY FILTER'); } else { return; } // makes no sense to ask for login in a pdf report..... } else { // *** Quality (function show_quality can be found in script: family.php) *** // Disabled because normally quality belongs to a source. //if ($personDb->pers_quality=='0' or $personDb->pers_quality){ // $quality_text=show_quality($personDb->pers_quality); // $process_text.= ' <i>'.ucfirst($quality_text).'</i>'; //} // *** Show extra names of BK *** if ($personDb->pers_gedcomnumber) { $eventnr = 0; $name_qry = $db_functions->get_events_person($personDb->pers_gedcomnumber, 'name'); foreach ($name_qry as $nameDb) { $eventnr++; $text = ''; if ($nameDb->event_gedcom == '_AKAN') { $text .= __('Also known as') . ': '; } // *** MyHeritage Family Tree Builder *** if ($nameDb->event_gedcom == '_AKA') { $text .= __('Also known as') . ': '; } if ($nameDb->event_gedcom == 'NICK') { $text .= __('Nickname') . ': '; } if ($nameDb->event_gedcom == '_ALIA') { $text .= __('alias name') . ': '; } // For Pro-Gen if ($nameDb->event_gedcom == '_SHON') { $text .= __('Short name (for reports)') . ': '; } if ($nameDb->event_gedcom == '_ADPN') { $text .= __('Adopted name') . ': '; } if ($nameDb->event_gedcom == '_HEBN') { $text .= __('Hebrew name') . ': '; } if ($nameDb->event_gedcom == '_CENN') { $text .= __('Census name') . ': '; } if ($nameDb->event_gedcom == '_MARN') { $text .= __('Married name') . ': '; } if ($nameDb->event_gedcom == '_GERN') { $text .= __('Nickname') . ': '; } if ($nameDb->event_gedcom == '_FARN') { $text .= __('Farm name') . ': '; } if ($nameDb->event_gedcom == '_BIRN') { $text .= __('Birth name') . ': '; } if ($nameDb->event_gedcom == '_INDN') { $text .= __('Indian name') . ': '; } if ($nameDb->event_gedcom == '_FKAN') { $text .= __('Formal name') . ': '; } if ($nameDb->event_gedcom == '_CURN') { $text .= __('Current name') . ': '; } if ($nameDb->event_gedcom == '_SLDN') { $text .= __('Soldier name') . ': '; } if ($nameDb->event_gedcom == '_FRKA') { $text .= __('Formerly known as') . ': '; } if ($nameDb->event_gedcom == '_RELN') { $text .= __('Religious name') . ': '; } if ($nameDb->event_gedcom == '_OTHN') { $text .= __('Other name') . ': '; } if ($eventnr > 1) { $templ_person["bknames" . $eventnr] = ', '; $process_text .= ', '; $text = lcfirst($text); } else { $templ_person["bknames" . $eventnr] = ''; $text = ucfirst($text); } $templ_person["bknames" . $eventnr] .= $text; if ($templ_person["bknames" . $eventnr] != '') { $temp = "bk_names" . $eventnr; } $process_text .= $text; if ($nameDb->event_date) { $templ_person["bk_date" . $eventnr] = date_place($nameDb->event_date, '') . ' '; if ($templ_person["bk_date" . $eventnr] != '') { $temp = "bk_date" . $eventnr; } $process_text .= $templ_person["bk_date" . $eventnr]; } $templ_person["bk_event" . $eventnr] = $nameDb->event_event; if ($templ_person["bk_event" . $eventnr] != '') { $temp = "bk_event" . $eventnr; } $process_text .= $nameDb->event_event; $source = show_sources2("person", "pers_event_source", $nameDb->event_id); if ($source) { if ($screen_mode == 'PDF') { $templ_person["bk_source" . $eventnr] = $source; $temp = "bk_source" . $eventnr; } else { $process_text .= $source; } } if ($nameDb->event_text) { $templ_person["bk_text" . $eventnr] = ' ' . $nameDb->event_text; $temp = "bk_text" . $eventnr; $process_text .= $templ_person["bk_text" . $eventnr]; } } unset($name_qry); } // *** Own code *** if ($user['group_own_code'] == 'j' and $personDb->pers_own_code) { if ($temp) { $templ_person[$temp] .= ", "; } //$templ_person["own_code"]='('.ucfirst($personDb->pers_own_code).')'; $templ_person["own_code"] = ucfirst($personDb->pers_own_code); $temp = "own_code"; if (!$process_text or $family_expanded == true) { $text = '<b>' . __('Own code') . ':</b> '; } else { $text = ', <b>' . lcfirst(__('Own code')) . ':</b> '; } // if ($process_text) $process_text.=', '; //$process_text.='<span class="pers_own_code">'.$templ_person["own_code"].'</span>'; $process_text .= '<span class="pers_own_code">' . $text . $templ_person["own_code"] . '</span>'; } // **************** // *** BIRTH *** // **************** $text = ''; if ($personDb->pers_birth_date or $personDb->pers_birth_place) { $templ_person["born_dateplacetime"] = date_place($personDb->pers_birth_date, $personDb->pers_birth_place); if ($templ_person["born_dateplacetime"] != '') { $temp = "born_dateplacetime"; } $text = $templ_person["born_dateplacetime"]; } // *** Birth time *** if (isset($personDb->pers_birth_time) and $personDb->pers_birth_time) { $templ_person["born_dateplacetime"] = ' ' . __('at') . ' ' . $personDb->pers_birth_time . ' ' . __('hour'); $temp = "born_dateplacetime"; $text .= $templ_person["born_dateplacetime"]; } if ($user["group_texts_pers"] == 'j') { $work_text = process_text($personDb->pers_birth_text); if ($work_text) { //$templ_person["born_text"]=", ".$work_text; $templ_person["born_text"] = " " . $work_text; $temp = "born_text"; $text .= $templ_person["born_text"]; } } // *** Birth source *** $source = show_sources2("person", "pers_birth_source", $personDb->pers_gedcomnumber); if ($source) { if ($screen_mode == 'PDF') { $templ_person["born_source"] = $source; $temp = "born_source"; } elseif ($screen_mode == 'RTF') { $rtf_text = strip_tags($templ_person["born_source"], "<b><i>"); $sect->writeText($rtf_text, $arial12, new PHPRtfLite_ParFormat()); } else { $text .= $dirmark1 . $source; } } // *** Birth declaration/ registration *** if ($personDb->pers_gedcomnumber) { $temp_text = witness($personDb->pers_gedcomnumber, 'birth_declaration'); if ($temp_text) { //if($temp) { $templ_person[$temp].=" ("; } $templ_person["born_witn"] = ' (' . __('birth declaration') . ': ' . $temp_text . ')'; $temp = "born_witn"; $text .= $templ_person["born_witn"]; } } // *** Check for birth items, if needed use a new line *** if ($text) { if (!$process_text or $family_expanded == true) { $text = '<b>' . ucfirst(__('born')) . '</b> ' . $text; } else { $text = ', <b>' . __('born') . '</b> ' . $text; } if ($process_text and $family_expanded == true) { $text = '<br>' . $text; } $process_text .= $text; } // *************** // *** BAPTISE *** // *************** $text = ''; if ($personDb->pers_bapt_date or $personDb->pers_bapt_place) { $templ_person["bapt_dateplacetime"] = date_place($personDb->pers_bapt_date, $personDb->pers_bapt_place); if ($templ_person["bapt_dateplacetime"] != '') { $temp = "bapt_dateplacetime"; } $text = $templ_person["bapt_dateplacetime"]; } if ($user["group_texts_pers"] == 'j') { $work_text = process_text($personDb->pers_bapt_text); if ($work_text) { //if($temp) { $templ_person[$temp].=", "; } //$templ_person["bapt_text"]=$work_text; $templ_person["bapt_text"] = ' ' . $work_text; $temp = "bapt_text"; //$text.=", ".$work_text; $text .= $templ_person["bapt_text"]; } } if ($user['group_religion'] == 'j' and $personDb->pers_religion) { $templ_person["bapt_reli"] = " (" . __('religion') . ': ' . $personDb->pers_religion . ')'; $temp = "bapt_reli"; $text .= ' <span class="religion">(' . __('religion') . ': ' . $personDb->pers_religion . ')</span>'; } // *** Baptise source *** $source = show_sources2("person", "pers_bapt_source", $personDb->pers_gedcomnumber); if ($source) { if ($screen_mode == 'PDF') { $templ_person["bapt_source"] = $source; $temp = "bapt_source"; } else { $text .= $source; } } // *** Show baptise witnesses *** if ($personDb->pers_gedcomnumber) { $temp_text = witness($personDb->pers_gedcomnumber, 'baptism_witness'); if ($temp_text) { if ($temp) { $templ_person[$temp] .= " ("; } $templ_person["bapt_witn"] = __('baptism witness') . ': ' . $temp_text . ')'; $temp = "bapt_witn"; $text .= ' (' . __('baptism witness') . ': ' . $temp_text . ')'; } } // *** check for baptise items, if needed use a new line *** if ($text) { if (!$process_text or $family_expanded == true) { $text = '<b>' . ucfirst(__('baptised')) . '</b> ' . $text; } else { $text = ', <b>' . __('baptised') . '</b> ' . $text; } if ($process_text and $family_expanded == true) { $text = '<br>' . $text; } $process_text .= $text; } // *** Show age of living person *** if (($personDb->pers_bapt_date or $personDb->pers_birth_date) and !$personDb->pers_death_date and $personDb->pers_alive != 'deceased') { $process_age = new calculate_year_cls(); $age = $process_age->calculate_age($personDb->pers_bapt_date, $personDb->pers_birth_date, ''); $templ_person["age_liv"] = $age; if ($templ_person["age_liv"] != '') { $temp = "age_liv"; } $process_text .= $dirmark1 . $age; // *** komma and space already in $age } // ****************** // *** DEATH *** // ****************** $text = ''; if ($personDb->pers_death_date or $personDb->pers_death_place) { $templ_person["dead_dateplacetime"] = date_place($personDb->pers_death_date, $personDb->pers_death_place); if ($templ_person["dead_dateplacetime"] != '') { $temp = "dead_dateplacetime"; } $text = $templ_person["dead_dateplacetime"]; } // *** Death time *** if (isset($personDb->pers_death_time) and $personDb->pers_death_time) { //$templ_person["dead_dateplacetime"]=' '.$personDb->pers_death_time; $templ_person["dead_dateplacetime"] = ' ' . __('at') . ' ' . $personDb->pers_death_time . ' ' . __('hour'); $temp = "dead_dateplacetime"; $text .= $templ_person["dead_dateplacetime"]; } if ($user["group_texts_pers"] == 'j') { $work_text = process_text($personDb->pers_death_text); if ($work_text) { //$text.=", ".$work_text; //if($temp) { $templ_person[$temp].=", "; } $templ_person["dead_text"] = ' ' . $work_text; $temp = "dead_text"; $text .= $templ_person["dead_text"]; } } // *** Show age, by Yossi Beck *** if (($personDb->pers_bapt_date or $personDb->pers_birth_date) and $personDb->pers_death_date) { $process_age = new calculate_year_cls(); $age = $process_age->calculate_age($personDb->pers_bapt_date, $personDb->pers_birth_date, $personDb->pers_death_date); $templ_person["dead_age"] = $age; if ($templ_person["dead_age"] != '') { $temp = "dead_age"; } $text .= $dirmark1 . $age; // *** comma and space already in $age } $pers_death_cause = ''; if ($personDb->pers_death_cause == 'murdered') { $pers_death_cause = ', ' . __('death cause') . ': ' . __('murdered'); } if ($personDb->pers_death_cause == 'drowned') { $pers_death_cause = ', ' . __('death cause') . ': ' . __('drowned'); } if ($personDb->pers_death_cause == 'perished') { $pers_death_cause = ', ' . __('death cause') . ': ' . __('perished'); } if ($personDb->pers_death_cause == 'killed in action') { $pers_death_cause = ', ' . __('killed in action'); } if ($personDb->pers_death_cause == 'being missed') { $pers_death_cause = ', ' . __('being missed'); } if ($personDb->pers_death_cause == 'committed suicide') { $pers_death_cause = ', ' . __('death cause') . ': ' . __('committed suicide'); } if ($personDb->pers_death_cause == 'executed') { $pers_death_cause = ', ' . __('death cause') . ': ' . __('executed'); } if ($personDb->pers_death_cause == 'died young') { $pers_death_cause = ', ' . __('died young'); } if ($personDb->pers_death_cause == 'died unmarried') { $pers_death_cause = ', ' . __('died unmarried'); } if ($personDb->pers_death_cause == 'registration') { $pers_death_cause = ', ' . __('registration'); } //2 TYPE registration? if ($personDb->pers_death_cause == 'declared death') { $pers_death_cause = ', ' . __('declared death'); } if ($pers_death_cause) { $templ_person["dead_cause"] = $pers_death_cause; $temp = "dead_cause"; $text .= $pers_death_cause; } else { if ($personDb->pers_death_cause) { if ($temp) { $templ_person[$temp] .= ", "; } $templ_person["dead_cause"] = __('death cause') . ': ' . $personDb->pers_death_cause; $temp = "dead_cause"; $text .= ', ' . __('death cause') . ': ' . $personDb->pers_death_cause; } } // *** Death source *** $source = show_sources2("person", "pers_death_source", $personDb->pers_gedcomnumber); if ($source) { if ($screen_mode == 'PDF') { $templ_person["dead_source"] = $source; $temp = "dead_source"; } else { $text .= $source; } } // *** Death declaration *** if ($personDb->pers_gedcomnumber) { $temp_text = witness($personDb->pers_gedcomnumber, 'death_declaration'); if ($temp_text) { if ($temp) { $templ_person[$temp] .= " ("; } $templ_person["dead_witn"] = __('death declaration') . ' ' . $temp_text . ')'; $temp = "dead_witn"; $text .= ' (' . __('death declaration') . ' ' . $temp_text . ')'; } } // *** Check for death items, if needed use a new line *** if ($text) { if (!$process_text or $family_expanded == true) { $text = '<b>' . ucfirst(__('died')) . '</b> ' . $text; } else { $text = ', <b>' . __('died') . '</b> ' . $text; } if ($process_text and $family_expanded == true) { $text = '<br>' . $text; } $process_text .= $text; } // **************** // *** BURIED *** // **************** $text = ''; if ($personDb->pers_buried_date or $personDb->pers_buried_place) { $templ_person["buri_dateplacetime"] = date_place($personDb->pers_buried_date, $personDb->pers_buried_place); if ($templ_person["buri_dateplacetime"] != '') { $temp = "buri_dateplacetime"; } $text = $templ_person["buri_dateplacetime"]; } if ($user["group_texts_pers"] == 'j') { $work_text = process_text($personDb->pers_buried_text); if ($work_text) { //if($temp) { $templ_person[$temp].=", "; } $templ_person["buri_text"] = ' ' . $work_text; $temp = "buri_text"; //$text.=", ".$work_text; $text .= $templ_person["buri_text"]; } } // *** Buried source *** $source = show_sources2("person", "pers_buried_source", $personDb->pers_gedcomnumber); if ($source) { if ($screen_mode == 'PDF') { $templ_person["buri_source"] = $source; $temp = "buri_source"; } else { $text .= $source; } } // *** Buried witness *** if ($personDb->pers_gedcomnumber) { $temp_text = witness($personDb->pers_gedcomnumber, 'burial_witness'); if ($temp_text) { //$templ_person[$temp].=" ("; $templ_person["buri_witn"] = ' (' . __('burial witness') . ' ' . $temp_text . ')'; $temp = "buri_witn"; $text .= $templ_person["buri_witn"]; } } // *** Check for burial items, if needed use a new line *** if ($text) { if ($personDb->pers_cremation) { $buried_cremation = __('cremation'); $templ_person["flag_buri"] = 1; } else { $buried_cremation = __('buried'); $templ_person["flag_buri"] = 0; } if (!$process_text or $family_expanded == true) { $text = '<b>' . ucfirst($buried_cremation) . '</b> ' . $text; } else { $text = ', <b>' . $buried_cremation . '</b> ' . $text; } if ($process_text and $family_expanded == true) { $text = '<br>' . $text; } $process_text .= $text; } // *** HZ-21 ash dispersion (asverstrooiing) *** $name_qry = $db_functions->get_events_person($personDb->pers_gedcomnumber, 'ash dispersion'); foreach ($name_qry as $nameDb) { $process_text .= ', ' . __('ash dispersion') . ' '; if ($nameDb->event_date) { $process_text .= date_place($nameDb->event_date, '') . ' '; } $process_text .= $nameDb->event_event . ' '; //SOURCE and TEXT. //CHECK PDF EXPORT } // ************************** // *** Show professions *** // ************************** if ($personDb->pers_gedcomnumber) { $eventnr = 0; $event_qry = $dbh->query("SELECT * FROM humo_events\n\t\t\t\tWHERE event_tree_id='" . $tree_id . "' AND event_person_id='" . $personDb->pers_gedcomnumber . "' AND event_kind='profession'\n\t\t\t\tORDER BY substring( event_date,-4 ), event_order"); $nr_occupations = $event_qry->rowCount(); while ($eventDb = $event_qry->fetch(PDO::FETCH_OBJ)) { $eventnr++; if ($eventnr == '1') { if ($nr_occupations == '1') { $occupation = __('occupation'); $templ_person["flag_prof"] = 0; } else { $occupation = __('occupations'); $templ_person["flag_prof"] = 1; } if ($family_expanded == true) { $process_text .= '<br><span class="profession"><b>' . ucfirst($occupation) . ':</b> '; } else { if ($process_text) { $process_text .= '. <span class="profession">'; } if ($temp) { $templ_person[$temp] .= ". "; } $process_text .= '<b>' . ucfirst($occupation) . ':</b> '; //$templ_person["prof_exist"]=ucfirst($occupation).': '; //$temp="prof_exist"; } } if ($eventnr > 1) { $process_text .= ', '; if ($temp) { $templ_person[$temp] .= ", "; } } if ($eventDb->event_date or $eventDb->event_place) { $templ_person["prof_date" . $eventnr] = date_place($eventDb->event_date, $eventDb->event_place) . '; '; $temp = "prof_date" . $eventnr; $process_text .= $templ_person["prof_date" . $eventnr]; } $process_text .= $eventDb->event_event; $templ_person["prof_prof" . $eventnr] = $eventDb->event_event; $temp = "prof_prof" . $eventnr; if ($eventDb->event_text) { $work_text = process_text($eventDb->event_text); if ($work_text) { //if($temp) { $templ_person[$temp].=", "; } if ($temp) { $templ_person[$temp] .= " "; } $templ_person["prof_text" . $eventnr] = $work_text; $temp = "prof_text" . $eventnr; //$process_text.=", ".$work_text; $process_text .= " " . $work_text; } } // *** Profession source *** $source = show_sources2("person", "pers_event_source", $eventDb->event_id); if ($source) { if ($screen_mode == 'PDF') { $templ_person["prof_source"] = $source; $temp = "prof_source"; } else { $process_text .= $source; } } } if ($eventnr > 0) { $process_text .= '</span>'; } } // *********************** // *** Show residences *** // *********************** if ($personDb->pers_gedcomnumber and $user['group_living_place'] == 'j') { $text = ''; $eventnr = 0; $event_qry = $db_functions->get_addresses_person($personDb->pers_gedcomnumber); $nr_addresses = count($event_qry); foreach ($event_qry as $eventDb) { $eventnr++; if ($eventnr == '1') { if ($process_text) { if ($family_expanded == true) { $text .= '<br>'; } else { $text .= '. '; } } if ($nr_addresses == '1') { $residence = __('residence'); $templ_person["flag_address"] = 0; } else { $residence = __('residences'); $templ_person["flag_address"] = 1; } if ($temp) { $templ_person[$temp] .= ". "; } //$templ_person["address_exist"]=ucfirst($residence).': '; //$temp="address_exist"; $text .= '<b>' . ucfirst($residence) . ':</b> '; } if ($eventnr > 1) { $text .= ', '; if ($temp) { $templ_person[$temp] .= ", "; } } if ($eventDb->address_date) { $text .= date_place($eventDb->address_date, '') . ' '; // default, without place, place is processed later. $templ_person["address_date" . $eventnr] = date_place($eventDb->address_date, '') . ' '; $temp = "address_date" . $eventnr; } if ($user['group_addresses'] == 'j' and $eventDb->address_address) { $text .= ' ' . $eventDb->address_address . ' '; // PDF Export? } if ($eventDb->address_zip) { $text .= ' ' . $eventDb->address_zip . ' '; // PDF Export? } $text .= $eventDb->address_place; $templ_person["address_address" . $eventnr] = $eventDb->address_place; if ($templ_person["address_address" . $eventnr] != '') { $temp = "address_address" . $eventnr; } if ($eventDb->address_phone) { $text .= ', ' . $eventDb->address_phone; } // *** Address text *** if ($eventDb->address_text) { $work_text = process_text($eventDb->address_text); if ($work_text) { if ($temp) { $templ_person[$temp] .= ", "; } $templ_person["address_text" . $eventnr] = $work_text; $temp = "address_text" . $eventnr; $text .= ", " . $work_text; } } $source = show_sources2("person", "pers_address_source", $eventDb->address_id); if ($source) { if ($screen_mode == 'PDF') { $templ_person["address_source"] = $source; $temp = "address_source"; } else { $text .= $source; } } } if ($text) { $process_text .= '<span class="pers_living_place">' . $text . '</span>'; } } // *** Person source *** $source = show_sources2("person", "person_source", $personDb->pers_gedcomnumber); if ($source) { if ($screen_mode == 'PDF') { $templ_person["pers_source"] = $source; $temp = "pers_source"; } else { $process_text .= $source; } } // *** Extended addresses for HuMo-gen and dutch Haza-data program (Haza-data plus version) *** if ($user['group_addresses'] == 'j') { // *** Search for all connected addresses *** $eventnr = 0; $connect_sql = $db_functions->get_connections_person('person_address', $personDb->pers_gedcomnumber); foreach ($connect_sql as $connectDb) { $eventnr++; if ($temp) { $templ_person[$temp] .= ". "; } $templ_person["HDadres_exist" . $eventnr] = __('Address') . ': '; $temp = "HDadres_exist" . $eventnr; $process_text .= '. <b>' . __('Address') . ':</b> '; $process_text .= '<a href="' . $uri_path . 'address.php?gedcomnumber=' . $connectDb->connect_item_id . '">'; $eventDb2 = $db_functions->get_address($connectDb->connect_item_id); if (isset($eventDb2->address_address) and $eventDb2->address_address) { $templ_person["HDadres_adres" . $eventnr] = " " . trim($eventDb2->address_address); $temp = "HDadres_adres" . $eventnr; $process_text .= $templ_person["HDadres_adres" . $eventnr]; } if (isset($eventDb2->address_address) and $eventDb2->address_place) { $templ_person["HDadres_place" . $eventnr] = " " . trim($eventDb2->address_place); $temp = "HDadres_place" . $eventnr; $process_text .= $templ_person["HDadres_place" . $eventnr]; } $process_text .= "</a>"; } } } //*** END PRIVACY PART *** // *** Use a link for multiple marriages by parent2 *** if ($person_kind == 'parent2') { $marriage_array = explode(";", $personDb->pers_fams); if (isset($marriage_array[1])) { for ($i = 0; $i <= substr_count($personDb->pers_fams, ";"); $i++) { $marriagenr = $i + 1; $parent2_famDb = $db_functions->get_family($marriage_array[$i]); // *** Use a class for marriage *** $parent2_marr_cls = new marriage_cls(); // *** Show standard marriage text *** if ($screen_mode != "PDF") { $parent2_marr_data = $parent2_marr_cls->marriage_data($parent2_famDb, $marriagenr, 'short'); } else { $pdf_marriage = $parent2_marr_cls->marriage_data($parent2_famDb, $marriagenr, 'short'); } if ($change_main_person == true) { $parent2Db = $db_functions->get_person($parent2_famDb->fam_woman); } else { $parent2Db = $db_functions->get_person($parent2_famDb->fam_man); } if ($id == $marriage_array[$i]) { if ($process_text) { $process_text .= ','; } if (isset($parent2_marr_data)) { $process_text .= ' ' . $dirmark1 . $parent2_marr_data . ' '; } // *** $parent2Db is empty if it is a N.N. person *** if ($parent2Db) { $name = $this->person_name($parent2Db); $process_text .= $name["standard_name"]; } else { $process_text .= __('N.N.'); } } else { $process_text .= ', '; // *** url_rewrite *** if ($humo_option["url_rewrite"] == "j") { // *** $uri_path is made header.php *** $process_text .= '<a href="' . $uri_path . 'family/' . $_SESSION['tree_prefix'] . '/' . $marriage_array[$i] . '/' . $personDb->pers_gedcomnumber . '/">'; } else { $process_text .= '<a href="' . CMS_ROOTPATH . 'family.php?database=' . $_SESSION['tree_prefix'] . '&id=' . $marriage_array[$i] . '&main_person=' . $personDb->pers_gedcomnumber . '">'; } if (isset($parent2_marr_data)) { $process_text .= $dirmark1 . $parent2_marr_data . ' '; } // *** $parent2Db is empty by N.N. person *** if ($parent2Db) { $name = $this->person_name($parent2Db); $process_text .= $name["standard_name"]; } else { $process_text .= __('N.N.'); } $process_text .= '</a>'; } if ($screen_mode == "PDF") { if ($parent2Db) { if ($temp) { $templ_person[$temp] .= ", "; } $name = $this->person_name($parent2Db); $templ_person["marr_more" . $marriagenr] = $pdf_marriage["relnr_rel"] . $pdf_marriage["rel_add"] . " " . $name["standard_name"]; $temp = "marr_more" . $marriagenr; } else { if ($temp) { $templ_person[$temp] .= ", "; } $templ_person["marr_more" . $marriagenr] = $pdf_marriage["relnr_rel"] . " " . __('N.N.'); $temp = "marr_more" . $marriagenr; } } } } } //if ($privacy){ if ($screen_mode == "mobile" or $privacy) { // } else { // *** Show media/ pictures *** $result = show_media($personDb, ''); // *** This function can be found in file: show_picture.php! *** $process_text .= $result[0]; if (isset($templ_person)) { $templ_person = array_merge((array) $templ_person, (array) $result[1]); } else { $templ_person = $result[1]; } // *** Internet links (URL) *** $url_qry = $db_functions->get_events_person($personDb->pers_gedcomnumber, 'URL'); if (count($url_qry) > 0) { $process_text .= '<br>'; } foreach ($url_qry as $urlDb) { if ($urlDb->event_text) { $process_text .= $urlDb->event_text . ': '; } $process_text .= '<a href="' . $urlDb->event_event . '" target="_blank">' . $urlDb->event_event . '</a>'; $process_text .= '<br>'; } //******** Text by person ************** if ($user["group_text_pers"] == 'j') { $work_text = process_text($personDb->pers_text, 'person'); // *** BK: Source by person text *** $source = show_sources2("person", "pers_text_source", $personDb->pers_gedcomnumber); if ($source) { //PDF if ($screen_mode == 'PDF') { // } else { $work_text .= $source; } } if ($work_text) { $process_text .= '<br>' . $work_text . "\n"; $templ_person["pers_text"] = "\n" . $work_text; $temp = "pers_text"; } } // *** Show events *** if ($user['group_event'] == 'j') { if ($personDb->pers_gedcomnumber) { $event_qry = $db_functions->get_events_person($personDb->pers_gedcomnumber, 'event'); $num_rows = count($event_qry); if ($num_rows > 0) { $process_text .= '<span class="event">' . "\n"; } $eventnr = 0; foreach ($event_qry as $eventDb) { $eventnr++; $process_text .= "<br>\n"; $templ_person["event_start" . $eventnr] = "\n"; // *** Check if NCHI is 0 or higher *** $event_gedcom = $eventDb->event_gedcom; //$event_text=$eventDb->event_text; if ($event_gedcom == 'NCHI' and trim($eventDb->event_event) == '') { $event_gedcom = 'NCHI0'; //$event_text=''; } $process_text .= '<b>' . language_event($event_gedcom) . '</b>'; $templ_person["event_ged" . $eventnr] = language_event($event_gedcom); $temp = "event_ged" . $eventnr; if ($eventDb->event_event) { $templ_person["event_event" . $eventnr] = ' ' . $eventDb->event_event; $temp = "event_event" . $eventnr; $process_text .= $templ_person["event_event" . $eventnr]; } $templ_person["event_dateplace" . $eventnr] = ' ' . date_place($eventDb->event_date, $eventDb->event_place); $temp = "event_dateplace" . $eventnr; $process_text .= $templ_person["event_dateplace" . $eventnr]; if ($eventDb->event_text) { $work_text = process_text($eventDb->event_text); if ($work_text) { //$process_text.=", ".$work_text; $process_text .= " " . $work_text; //if($temp) { $templ_person[$temp].=", "; } if ($temp) { $templ_person[$temp] .= " "; } $templ_person["event_text" . $eventnr] = $work_text; $temp = "event_text" . $eventnr; } } $source = show_sources2("person", "pers_event_source", $eventDb->event_id); if ($source) { if ($screen_mode == 'PDF') { $templ_person["pers_event_source"] = $source; $temp = "pers_event_source"; } else { $process_text .= $source; } } } if ($num_rows > 0) { $process_text .= "</span>\n"; } unset($event_qry); } } } // End of privacy // *** Return person data *** if ($screen_mode == "mobile") { if ($process_text) { return $process_text; } } elseif ($screen_mode != "PDF") { if ($process_text) { $div = '<div class="margin_person">'; if ($person_kind == 'child') { $div = '<div class="margin_child">'; } return $privacy_filter . $div . $process_text . '</div>'; } else { return $privacy_filter; } } else { // return array with pdf values if (isset($templ_person)) { return $templ_person; } } } // End of check $personDb }
echo '<th colspan="2" width="280px">' . ucfirst(__('Married notice (religious)')) . '</th>'; echo '<th colspan="2" width="280px">' . ucfirst(__('Married (religious)')) . '</th>'; echo '</tr>'; while (@($familyDb = $person_result->fetch(PDO::FETCH_OBJ))) { // *** Man privacy filter *** $personDb = $db_functions->get_person($familyDb->fam_man); // *** Person class used for name and person pop-up data *** $man_cls = new person_cls(); $man_cls->construct($personDb); // *** Woman privacy filter *** $personDb = $db_functions->get_person($familyDb->fam_woman); // *** Person class used for name and person pop-up data *** $woman_cls = new person_cls(); $woman_cls->construct($personDb); // *** Proces marriage using a class *** $marriage_cls = new marriage_cls(); $marriage_cls->construct($familyDb, $man_cls->privacy, $woman_cls->privacy); $family_privacy = $marriage_cls->privacy; // *** $family_privacy='1' = filter *** if ($family_privacy) { $privcount++; } else { show_person($familyDb); } } echo '</table>'; if ($privcount) { echo "<br>" . $privcount . __(' persons are not shown due to privacy settings') . ".<br>"; } echo '<br><div class="index_list1">' . $line_pages . '</div>'; //for testing only:
$stat_easy_id = $datasqlDb->tree_id . '-' . $familyDb->fam_gedcomnumber . '-' . $familyDb->fam_man . '-' . $familyDb->fam_woman; $update_sql = "INSERT INTO humo_stat_date SET\n\t\t\t\t\t\t\tstat_easy_id='" . $stat_easy_id . "',\n\t\t\t\t\t\t\tstat_ip_address='" . $_SERVER['REMOTE_ADDR'] . "',\n\t\t\t\t\t\t\tstat_user_agent='" . $_SERVER['HTTP_USER_AGENT'] . "',\n\t\t\t\t\t\t\tstat_tree_id='" . $datasqlDb->tree_id . "',\n\t\t\t\t\t\t\tstat_gedcom_fam='" . $familyDb->fam_gedcomnumber . "',\n\t\t\t\t\t\t\tstat_gedcom_man='" . $familyDb->fam_man . "',\n\t\t\t\t\t\t\tstat_gedcom_woman='" . $familyDb->fam_woman . "',\n\t\t\t\t\t\t\tstat_date_stat='" . date("Y-m-d H:i") . "',\n\t\t\t\t\t\t\tstat_date_linux='" . time() . "'"; $result = $dbh->query($update_sql); } } // *** Privacy filter man and woman *** @($person_manDb = $db_functions->get_person($familyDb->fam_man)); // *** Process man using a class *** $man_cls = new person_cls(); $man_cls->construct($person_manDb); @($person_womanDb = $db_functions->get_person($familyDb->fam_woman)); // *** Process woman using a class *** $woman_cls = new person_cls(); $woman_cls->construct($person_womanDb); // *** Process marriage using a class *** $marriage_cls = new marriage_cls(); $marriage_cls->construct($familyDb, $man_cls->privacy, $woman_cls->privacy); $family_privacy = $marriage_cls->privacy; // ******************************************************************* // *** Show family *** // ******************************************************************* if ($screen_mode != 'STAR') { // *** Interne link voor descendant_report *** if ($descendant_report == true) { // *** Interne link (Romeins number_generation) *** if ($screen_mode == 'PDF') { // put internal PDF link to family $pdf->Cell(0, 1, " ", 0, 1); $romannr = $number_roman[$generateIndex + 1] . '-' . $number_generation[$familyIndex + 1]; if (isset($link[$romannr])) { $pdf->SetLink($link[$romannr], -1);
if ($ancestor_array[$i] != '0') { @($person_manDb = $db_functions->get_person($ancestor_array[$i])); $man_cls = new person_cls(); $man_cls->construct($person_manDb); $privacy_man = $man_cls->privacy; // for pdf function pdf_ancestor_name() further along //$sexe=$person_manDb->pers_sexe; if (strtolower($person_manDb->pers_sexe) == 'm' and $ancestor_number[$i] > 1) { @($familyDb = $db_functions->get_family($marriage_gedcomnumber[$i])); // *** Use privacy filter of woman *** @($person_womanDb = $db_functions->get_person($familyDb->fam_woman)); $woman_cls = new person_cls(); $woman_cls->construct($person_womanDb); $privacy_woman = $woman_cls->privacy; // *** Use class for marriage *** $marriage_cls = new marriage_cls(); $marriage_cls->construct($familyDb, $privacy_man, $privacy_woman); $family_privacy = $marriage_cls->privacy; } if ($screen_mode != 'PDF' and $screen_mode != 'RTF') { echo '<tr><td valign="top" width="80" nowrap><b>' . $ancestor_number[$i] . '</b> (' . floor($ancestor_number[$i] / 2) . ')</td>'; echo '<td>'; //*** Show data man *** echo '<div class="parent1">'; // *** Use "child", to show a link for own family. *** echo $man_cls->name_extended("child"); if ($listednr == '') { echo $man_cls->person_data("standard", $ancestor_array[$i]); } else { // person was already listed echo ' <strong> (' . __('Allready listed above as number ') . $listednr . ') </strong>';
function outline($family_id, $main_person, $gn, $nr_generations) { global $dbh, $db_functions, $tree_prefix_quoted, $pdf, $show_date, $dates_behind_names, $nr_generations; global $language, $dirmark1, $dirmark1, $screen_mode; $family_nr = 1; //*** Process multiple families *** if ($nr_generations < $gn) { return; } $gn++; // *** Count marriages of man *** // *** YB: if needed show woman as main_person *** @($familyDb = $db_functions->get_family($family_id, 'man-woman')); $parent1 = ''; $parent2 = ''; $change_main_person = false; // *** Standard main_person is the father *** if ($familyDb->fam_man) { $parent1 = $familyDb->fam_man; } // *** If mother is selected, mother will be main_person *** if ($familyDb->fam_woman == $main_person) { $parent1 = $familyDb->fam_woman; $change_main_person = true; } // *** Check family with parent1: N.N. *** if ($parent1) { // *** Save man's families in array *** @($personDb = $db_functions->get_person($parent1, 'famc-fams')); $marriage_array = explode(";", $personDb->pers_fams); $nr_families = substr_count($personDb->pers_fams, ";"); } else { $marriage_array[0] = $family_id; $nr_families = "0"; } // *** Loop multiple marriages of main_person *** for ($parent1_marr = 0; $parent1_marr <= $nr_families; $parent1_marr++) { @($familyDb = $db_functions->get_family($marriage_array[$parent1_marr])); // *** Privacy filter man and woman *** @($person_manDb = $db_functions->get_person($familyDb->fam_man)); $man_cls = new person_cls(); $man_cls->construct($person_manDb); $privacy_man = $man_cls->privacy; @($person_womanDb = $db_functions->get_person($familyDb->fam_woman)); $woman_cls = new person_cls(); $woman_cls->construct($person_womanDb); $privacy_woman = $woman_cls->privacy; $marriage_cls = new marriage_cls(); $marriage_cls->construct($familyDb, $privacy_man, $privacy_woman); $familylevend = $marriage_cls->privacy; // ************************************************************* // *** Parent1 (normally the father) *** // ************************************************************* if ($familyDb->fam_kind != 'PRO-GEN') { //onecht kind, vrouw zonder man if ($family_nr == 1) { // *** Show data of man *** $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) if ($screen_mode != "PDF") { echo '<div class="' . $indent . '">'; echo '<b>' . $gn . ' </b>'; } else { $pdf->SetLeftMargin($gn * 10); $pdf->Write(8, "\n"); $pdf->Write(8, $gn . ' '); } if ($change_main_person == true) { if ($screen_mode != "PDF") { echo $woman_cls->name_extended("outline"); } else { $pdf->SetFont('Arial', 'B', 12); $pdf->Write(8, $woman_cls->name_extended("outline")); $pdf->SetFont('Arial', '', 12); } if ($show_date == "1" and !$privacy_woman) { if ($screen_mode != "PDF") { echo $dirmark1 . ','; if ($dates_behind_names == false) { echo '<br>'; } echo ' (' . language_date($person_womanDb->pers_birth_date) . ' - ' . language_date($person_womanDb->pers_death_date) . ')'; } else { if ($dates_behind_names == false) { $pdf->SetLeftMargin($gn * 10 + 4); $pdf->Write(8, "\n"); } $pdf->Write(8, ' (' . language_date($person_womanDb->pers_birth_date) . ' - ' . language_date($person_womanDb->pers_death_date) . ')'); } } } else { if ($screen_mode != "PDF") { echo $man_cls->name_extended("outline"); } else { $pdf->SetFont('Arial', 'B', 12); $pdf->Write(8, $man_cls->name_extended("outline")); $pdf->SetFont('Arial', '', 12); } if ($show_date == "1" and !$privacy_man) { if ($screen_mode != "PDF") { echo $dirmark1 . ','; if ($dates_behind_names == false) { echo '<br>'; } echo ' (' . language_date($person_manDb->pers_birth_date) . ' - ' . language_date($person_manDb->pers_death_date) . ')'; } else { if ($dates_behind_names == false) { $pdf->SetLeftMargin($gn * 10 + 4); $pdf->Write(8, "\n"); } $pdf->Write(8, ' (' . language_date($person_manDb->pers_birth_date) . ' - ' . language_date($person_manDb->pers_death_date) . ')'); } } } if ($screen_mode != "PDF") { echo '</div>'; } } else { } // empty: no second show of data of main_person in outline report $family_nr++; } // *** end check of PRO-GEN *** // ************************************************************* // *** Parent2 (normally the mother) *** // ************************************************************* if ($screen_mode != "PDF") { echo '<div class="' . $indent . '" style="font-style:italic">'; echo ' x ' . $dirmark1; } else { $pdf->SetLeftMargin($gn * 10); $pdf->Write(8, "\n"); $pdf->Write(8, 'x '); } if ($change_main_person == true) { if ($screen_mode != "PDF") { echo $man_cls->name_extended("outline"); } else { $pdf->SetFont('Arial', 'BI', 12); $pdf->Write(8, $man_cls->name_extended("outline")); $pdf->SetFont('Arial', '', 12); } if ($show_date == "1" and !$privacy_man) { if ($screen_mode != "PDF") { echo $dirmark1 . ','; if ($dates_behind_names == false) { echo '<br>'; } echo ' (' . @language_date($person_manDb->pers_birth_date) . ' - ' . @language_date($person_manDb->pers_death_date) . ')'; } else { if ($dates_behind_names == false) { $pdf->SetLeftMargin($gn * 10 + 4); $pdf->Write(8, "\n"); } $pdf->Write(8, ' (' . @language_date($person_manDb->pers_birth_date) . ' - ' . @language_date($person_manDb->pers_death_date) . ')'); } } } else { if ($screen_mode != "PDF") { echo $woman_cls->name_extended("outline"); } else { $pdf->SetFont('Arial', 'BI', 12); $pdf->Write(8, $woman_cls->name_extended("outline")); $pdf->SetFont('Arial', '', 12); } if ($show_date == "1" and !$privacy_woman) { if ($screen_mode != "PDF") { echo $dirmark1 . ','; if ($dates_behind_names == false) { echo '<br>'; } echo ' (' . @language_date($person_womanDb->pers_birth_date) . ' - ' . @language_date($person_womanDb->pers_death_date) . ')'; } else { if ($dates_behind_names == false) { $pdf->SetLeftMargin($gn * 10 + 4); $pdf->Write(8, "\n"); } $pdf->Write(8, ' (' . @language_date($person_womanDb->pers_birth_date) . ' - ' . @language_date($person_womanDb->pers_death_date) . ')'); } } } if ($screen_mode != "PDF") { echo '</div>'; } // ************************************************************* // *** Children *** // ************************************************************* if ($familyDb->fam_children) { $childnr = 1; $child_array = explode(";", $familyDb->fam_children); for ($i = 0; $i <= substr_count("{$familyDb->fam_children}", ";"); $i++) { @($childDb = $db_functions->get_person($child_array[$i])); $child_privacy = ""; $child_cls = new person_cls(); $child_cls->construct($childDb); $child_privacy = $child_cls->privacy; // *** Build descendant_report *** if ($childDb->pers_fams) { // *** 1e family of child *** $child_family = explode(";", $childDb->pers_fams); $child1stfam = $child_family[0]; outline($child1stfam, $childDb->pers_gedcomnumber, $gn, $nr_generations); // recursive } else { // Child without own family if ($nr_generations >= $gn) { $childgn = $gn + 1; $childindent = $dir . 'sub' . $childgn; if ($screen_mode != "PDF") { echo '<div class="' . $childindent . '">'; echo '<b>' . $childgn . ' ' . '</b>'; echo $child_cls->name_extended("outline"); } else { $pdf->SetLeftMargin($childgn * 10); $pdf->Write(8, "\n"); $pdf->Write(8, $childgn . ' '); $pdf->SetFont('Arial', 'B', 12); $pdf->Write(8, $child_cls->name_extended("outline")); $pdf->SetFont('Arial', '', 12); } if ($show_date == "1" and !$child_privacy) { if ($screen_mode != "PDF") { echo $dirmark1 . ','; if ($dates_behind_names == false) { echo '<br>'; } echo ' (' . language_date($childDb->pers_birth_date) . ' - ' . language_date($childDb->pers_death_date) . ')'; } else { if ($dates_behind_names == false) { $pdf->SetLeftMargin($childgn * 10 + 4); $pdf->Write(8, "\n"); } $pdf->Write(8, ' (' . language_date($childDb->pers_birth_date) . ' - ' . language_date($childDb->pers_death_date) . ')'); } } if ($screen_mode != "PDF") { echo '</div>'; } } } if ($screen_mode != "PDF") { echo "\n"; } else { } $childnr++; } } } // Show multiple marriages }
if ($id == $marrDb->fam_man) { $partner = $marrDb->fam_woman; } else { $partner = $marrDb->fam_man; } $children = $marrDb->fam_children; // *** Privacy filter main person and spouse *** // privacy filter main person is already set above // check privacy of partner $person_partner = $dbh->query("SELECT * FROM humo_persons\n\t\t\tWHERE pers_tree_id='" . $tree_id . "' AND pers_gedcomnumber='{$partner}'"); @($person_partnerDb = $person_partner->fetch(PDO::FETCH_OBJ)); // *** Proces spouse using a clas *** $partner_cls = new person_cls(); $partner_cls->construct($person_partnerDb); // *** Proces marriage using a class *** $marriage_cls = new marriage_cls(); $marriage_cls->construct($res, $man_cls->privacy, $partner_cls->privacy); $family_privacy = $marriage_cls->privacy; // *** Show full marriage details *** if ($family_privacy) { // *** Show standard marriage data *** $var = '<br>' . $marriage_cls->marriage_data($marrDb, '', 'short'); } else { $var = '<br>' . $marriage_cls->marriage_data($marrDb); } print '<li data-role="list-divider">' . __('Marriage') . '</li>'; print '<li><p>' . $var . '</p></li>'; // marriage date place // *** Show partner *** echo popup($partner, false); // *** Show person details using standard HuMo-gen function ***