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; }
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: //echo 'Query: '.$query." LIMIT ".safe_text($item).",".$nr_persons.'<br>';
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 }
@($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>'; }
$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 *** //$partner_sql=$dbh->query("SELECT * FROM ".safe_text($_SESSION['tree_prefix'])."person WHERE pers_gedcomnumber='".safe_text($partner)."'");