Example #1
0
 /**
  * print a family descendancy
  *
  * @param WT_Individual $person
  * @param WT_Family     $family
  * @param int           $depth the descendancy depth to show
  *
  * @return void
  */
 function print_family_descendancy(WT_Individual $person, WT_Family $family, $depth)
 {
     global $WT_IMAGES, $Dindent, $personcount;
     // print marriage info
     echo '<li>';
     echo '<img src="', $WT_IMAGES['spacer'], '" height="2" width="', $Dindent + 4, '" alt="">';
     echo '<span class="details1" style="white-space:nowrap;">';
     echo "<a href=\"#\" onclick=\"expand_layer('" . $family->getXref() . $personcount . "'); return false;\" class=\"top\"><i id=\"" . $family->getXref() . $personcount . "_img\" class=\"icon-minus\" title=\"" . WT_I18N::translate('View family') . "\"></i></a>";
     if ($family->canShow()) {
         foreach ($family->getFacts(WT_EVENTS_MARR) as $fact) {
             echo ' <a href="', $family->getHtmlUrl(), '" class="details1">', $fact->summary(), '</a>';
         }
     }
     echo '</span>';
     // print spouse
     $spouse = $family->getSpouse($person);
     echo '<ul style="list-style:none; display:block;" id="' . $family->getXref() . $personcount . '">';
     echo '<li>';
     echo '<table border="0" cellpadding="0" cellspacing="0"><tr><td>';
     print_pedigree_person($spouse, 1, 0, $personcount);
     echo '</td>';
     // check if spouse has parents and add an arrow
     echo '<td>&nbsp;</td>';
     echo '<td>';
     if ($spouse) {
         foreach ($spouse->getChildFamilies() as $cfamily) {
             foreach ($cfamily->getSpouses() as $parent) {
                 print_url_arrow($parent->getXref() . $personcount . $person->getXref(), '?rootid=' . $parent->getXref() . '&amp;generations=' . $this->generations . '&amp;chart_style=' . $this->chart_style . '&amp;show_full=' . $this->show_full . '&amp;box_width=' . $this->box_width . '&amp;ged=' . WT_GEDURL, WT_I18N::translate('Start at parents'), 2);
                 $personcount++;
                 // only show the arrow for one of the parents
                 break;
             }
         }
     }
     if ($this->show_full) {
         echo '<br><br>&nbsp;';
     }
     echo '</td></tr>';
     // children
     $children = $family->getChildren();
     echo '<tr><td colspan="3" class="details1" >&nbsp;&nbsp;';
     if ($children) {
         echo WT_Gedcom_Tag::getLabel('NCHI') . ': ' . count($children);
     } else {
         // Distinguish between no children (NCHI 0) and no recorded
         // children (no CHIL records)
         if (strpos($family->getGedcom(), '\\n1 NCHI 0')) {
             echo WT_Gedcom_Tag::getLabel('NCHI') . ': ' . count($children);
         } else {
             echo WT_I18N::translate('No children');
         }
     }
     echo '</td></tr></table>';
     echo '</li>';
     if ($depth > 1) {
         foreach ($children as $child) {
             $personcount++;
             $this->print_child_descendancy($child, $depth - 1);
         }
     }
     echo '</ul>';
     echo '</li>';
 }
Example #2
0
/**
 * print the children table for a family
 *
 * @param WT_Family $family  family
 * @param string    $childid child ID
 * @param int       $sosa    child sosa number
 * @param string    $label   indi label (descendancy booklet)
 * @param int       $personcount
 */
function print_family_children(WT_Family $family, $childid = '', $sosa = 0, $label = '', $personcount = 1)
{
    global $bheight, $pbheight, $cbheight, $show_cousins, $WT_IMAGES, $TEXT_DIRECTION;
    $children = $family->getChildren();
    $numchil = count($children);
    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\"><tr>";
    if ($sosa > 0) {
        echo "<td></td>";
    }
    echo "<td><span class=\"subheaders\">";
    if ($numchil == 0) {
        echo WT_I18N::translate('No children');
    } else {
        echo WT_I18N::plural('%s child', '%s children', $numchil, $numchil);
    }
    echo '</span>';
    if ($sosa == 0 && WT_USER_CAN_EDIT) {
        echo '<br>';
        echo "<a href=\"#\" onclick=\"return add_child_to_family('", $family->getXref(), "', 'U');\">" . WT_I18N::translate('Add a child to this family') . "</a>";
        echo ' <a class="icon-sex_m_15x15" href="#" onclick="return add_child_to_family(\'', $family->getXref(), '\', \'M\');" title="', WT_I18N::translate('son'), '"></a>';
        echo ' <a class="icon-sex_f_15x15" href="#" onclick="return add_child_to_family(\'', $family->getXref(), '\', \'F\');" title="', WT_I18N::translate('daughter'), '"></a>';
        echo '<br><br>';
    }
    echo '</td>';
    if ($sosa > 0) {
        echo '<td></td><td></td>';
    }
    echo '</tr>';
    $nchi = 1;
    if ($children) {
        foreach ($children as $child) {
            echo '<tr>';
            if ($sosa != 0) {
                if ($child->getXref() == $childid) {
                    print_sosa_number($sosa, $childid);
                } elseif (empty($label)) {
                    print_sosa_number("");
                } else {
                    print_sosa_number($label . $nchi++ . ".");
                }
            }
            if ($child->isNew()) {
                echo '<td valign="middle" class="new">';
            } elseif ($child->isOld()) {
                echo '<td valign="middle" class="old">';
            } else {
                echo '<td valign="middle">';
            }
            print_pedigree_person($child, 1, 8, $personcount++);
            echo "</td>";
            if ($sosa != 0) {
                // loop for all families where current child is a spouse
                $famids = $child->getSpouseFamilies();
                $maxfam = count($famids) - 1;
                for ($f = 0; $f <= $maxfam; $f++) {
                    $famid_child = $famids[$f]->getXref();
                    // multiple marriages
                    if ($f > 0) {
                        echo "</tr><tr><td>&nbsp;</td>";
                        echo "<td valign=\"top\"";
                        if ($TEXT_DIRECTION == "rtl") {
                            echo " align=\"left\">";
                        } else {
                            echo " align=\"right\">";
                        }
                        //if ($f==$maxfam) echo "<img height=\"50%\"";
                        //else echo "<img height=\"100%\"";
                        //find out how many cousins there are to establish vertical line on second families
                        $fchildren = $famids[$f]->getChildren();
                        $kids = count($fchildren);
                        $Pheader = $cbheight * $kids - $bheight;
                        $PBadj = 6;
                        // default
                        if ($show_cousins > 0) {
                            if ($cbheight * $kids > $bheight) {
                                $PBadj = $Pheader / 2 + $kids * 4.5;
                            }
                        }
                        if ($PBadj < 0) {
                            $PBadj = 0;
                        }
                        if ($f == $maxfam) {
                            echo "<img height=\"" . ($bheight / 2 + $PBadj) . "px\"";
                        } else {
                            echo "<img height=\"" . $pbheight . "px\"";
                        }
                        echo " width=\"3\" src=\"" . $WT_IMAGES["vline"] . "\" alt=\"\">";
                        echo "</td>";
                    }
                    echo "<td class=\"details1\" valign=\"middle\" align=\"center\">";
                    $spouse = $famids[$f]->getSpouse($child);
                    $marr = $famids[$f]->getFirstFact('MARR');
                    $div = $famids[$f]->getFirstFact('DIV');
                    if ($marr) {
                        // marriage date
                        echo $marr->getDate()->minDate()->format('%Y');
                        // divorce date
                        if ($div) {
                            echo '–', $div->getDate()->minDate()->format('%Y');
                        }
                    }
                    echo "<br><img width=\"100%\" class=\"line5\" height=\"3\" src=\"" . $WT_IMAGES["hline"] . "\" alt=\"\">";
                    echo "</td>";
                    // spouse information
                    echo "<td style=\"vertical-align: center;";
                    if (!empty($divrec)) {
                        echo " filter:alpha(opacity=40);opacity:0.4;\">";
                    } else {
                        echo "\">";
                    }
                    print_pedigree_person($spouse, 1, 9, $personcount++);
                    echo "</td>";
                    // cousins
                    if ($show_cousins) {
                        print_cousins($famid_child, $personcount++);
                    }
                }
            }
            echo "</tr>";
        }
    } elseif ($sosa < 1) {
        // message 'no children' except for sosa
        if (preg_match('/\\n1 NCHI (\\d+)/', $family->getGedcom(), $match) && $match[1] == 0) {
            echo '<tr><td><i class="icon-childless"></i> ' . WT_I18N::translate('This family remained childless') . '</td></tr>';
        }
    } else {
        echo "<tr>";
        print_sosa_number($sosa, $child);
        echo "<td valign=\"top\">";
        print_pedigree_person(WT_Individual::getInstance($childid), 1, 0, $personcount);
        echo "</td></tr>";
    }
    echo "</table><br>";
}