Esempio n. 1
0
function setup_edit()
{
    $rel = new Relationship();
    $rel->setFromRequest();
    if (!$rel->relation->person_id) {
        $rel->relation->person_id = -1;
    }
    $pdao = getPeopleDAO();
    if ($rel->person->person_id > 0) {
        $dao = getRelationsDAO();
        $dao->getRelationshipDetails($rel);
        if ($rel->numResults > 0) {
            $ret = $rel->results[0];
            $pdao->getParents($ret->relation);
        }
    } else {
        $ret = $rel;
    }
    $pdao->getParents($ret->person);
    $dao = getEventDAO();
    $e = new Event();
    $e->event_id = $ret->event->event_id;
    $dao->getEvents($e, Q_REL, true);
    if ($e->numResults == 0) {
        $e = new Event();
        $e->type = MARRIAGE_EVENT;
        $ret->event = $e;
    } else {
        $ret->event = $e->results[0];
    }
    $ret->event->person->person_id = 'null';
    return $ret;
}
Esempio n. 2
0
function setup_edit()
{
    $dao = getEventDAO();
    $e = new Event();
    $e->setFromRequest();
    $dao->getEvents($e, Q_ALL, true);
    if ($e->numResults > 0) {
        $per = $e->results[0]->person;
    } else {
        $per = new PersonDetail();
        $per->setFromRequest();
        $e->results = array(new Event());
        $e->results[0]->type = -1;
    }
    $per->queryType = Q_IND;
    $dao = getPeopleDAO();
    $dao->getPersonDetails($per);
    if ($per->numResults > 0) {
        $ret = $per->results[0];
    } else {
        $ret = $per;
    }
    $ret->events = $e->results;
    return $ret;
}
Esempio n. 3
0
function do_headers($title, $extra = '')
{
    global $clang;
    global $dir;
    global $charset;
    $config = Config::getInstance();
    ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php 
    echo $clang;
    ?>
" lang="<?php 
    echo $clang;
    ?>
" dir="<?php 
    echo $dir;
    ?>
">
<head>
<?php 
    echo $extra;
    ?>
<link href="css/bootstrap.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap-responsive.css" rel="stylesheet">
<link rel="stylesheet" href="<?php 
    echo $config->styledir;
    ?>
default.css.php" type="text/css" />
<link rel="stylesheet" href="<?php 
    echo $config->styledir . $_SESSION["style"];
    ?>
" type="text/css" />
<link rel="shortcut icon" href="images/favicon.ico" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="<?php 
    echo $config->desc;
    ?>
" />
<meta name="page-topic" content="Genealogy" />
<meta name="audience" content="All" />
<meta name="robots" content="INDEX,FOLLOW" />
<meta name="keywords" content="Genealogy phpmyfamily<?php 
    $dao = getPeopleDAO();
    $surnames = $dao->getSurnames();
    foreach ($surnames as $per) {
        echo " " . $per->name->surname;
    }
    ?>
" />
<title><?php 
    echo $title;
    ?>
</title>
</head><?php 
    // make titles available for later,
    $GLOBALS["title"] = $title;
}
Esempio n. 4
0
 function addPeople()
 {
     $callback = array($this, 'addPersonToGraph');
     $search = new PersonDetail();
     $search->queryType = Q_TYPE;
     $search->order = "p_year_of_birth";
     $dao = getPeopleDAO();
     $dao->getPersonDetails($search, $callback);
 }
Esempio n. 5
0
function setup_edit()
{
    $per = new PersonDetail();
    $per->father = new PersonDetail();
    $per->mother = new PersonDetail();
    $per->birth_place = new Location();
    $per->setFromRequest();
    $per->queryType = Q_IND;
    $dao = getPeopleDAO();
    $dao->getPersonDetails($per);
    if ($per->numResults > 0) {
        $ret = $per->results[0];
    } else {
        $ret = $per;
    }
    $dao = getEventDAO();
    $e = new Event();
    $e->person->person_id = $per->person_id;
    $dao->getEvents($e, Q_BD, true);
    $ret->events = $e->results;
    return $ret;
}
Esempio n. 6
0
function setup_edit()
{
    $img = new Image();
    $img->image_id = -1;
    $img->setFromRequest();
    $dao = getImageDAO();
    $dao->getImages($img);
    if ($img->numResults == 0) {
        if (isset($_REQUEST["event"])) {
            $dao = getEventDAO();
            $event = new Event();
            $event->setFromRequest();
            $dao->getEvents($event, Q_ALL);
            $img->event = $event->results[0];
            $img->person = $img->event->person;
        } else {
            $img->event = new Event();
        }
        if ($img->person->person_id > 0) {
            $img->person->queryType = Q_IND;
            $dao = getPeopleDAO();
            $dao->getPersonDetails($img->person);
            $img->person = $img->person->results[0];
        }
        $img->source = new Source();
        $img->source->setFromRequest();
        if ($img->source->source_id > 0) {
            $sdao = getSourceDAO();
            $sdao->getSources($img->source);
            if ($img->source->numResults > 0) {
                $img->source = $img->source->results[0];
            }
        }
        $ret = $img;
    } else {
        $ret = $img->results[0];
    }
    return $ret;
}
Esempio n. 7
0
<hr />
<br /><br />
<?php 
    if ($_SESSION["admin"] == 1) {
        echo $strAdminUser . "<br>\n";
    }
    ?>
<table width="100%">
	<tr>
		<td width="50%" valign="top"><?php 
    include "inc/passwdform.inc.php";
    ?>
</td>
		<td width="50%" align="right" valign="top">
<?php 
    $dao = getPeopleDAO();
    $tracked = $dao->getTrackedPeople();
    ?>
		
			<table width="70%">
				<tr>
					<th colspan="2"><?php 
    echo $strMonitoring;
    ?>
</th>
				</tr>
				<tr>
					<th><?php 
    echo $strPerson;
    ?>
</th>
Esempio n. 8
0
function setup_edit()
{
    $trans = new Transcript();
    $trans->setFromRequest();
    if (!isset($trans->transcript_id)) {
        if (isset($_REQUEST["person"]) && $trans->person->person_id > 0) {
            $trans->person->queryType = Q_IND;
            $dao = getPeopleDAO();
            $dao->getPersonDetails($trans->person);
            if ($trans->person->numResults == 0) {
                $trans->person = $trans->person->results[0];
            } else {
                $trans->person = new PersonDetail();
                $trans->person->setFromRequest();
            }
        } else {
            $trans->person = new PersonDetail();
            $trans->person->setFromRequest();
        }
        $trans->source = new Source();
        $trans->source->setFromRequest();
        if ($trans->source->source_id > 0) {
            $sdao = getSourceDAO();
            $sdao->getSources($trans->source);
            if ($trans->source->numResults > 0) {
                $trans->source = $trans->source->results[0];
            }
        }
        $ret = $trans;
    } else {
        $dao = getTranscriptDAO();
        $dao->getTranscripts($trans);
        if ($trans->numResults == 0) {
            if (isset($_REQUEST["event"])) {
                $dao = getEventDAO();
                $event = new Event();
                $event->setFromRequest();
                $dao->getEvents($event, Q_ALL);
                $trans->event = $event->results[0];
                $trans->person = $trans->event->person;
            }
            if ($trans->person->person_id > 0) {
                $trans->person->queryType = Q_IND;
                $dao = getPeopleDAO();
                $dao->getPersonDetails($trans->person);
                $trans->person = $trans->person->results[0];
            } else {
                $trans->person = new PersonDetail();
            }
            $trans->source = new Source();
            $trans->source->setFromRequest();
            if ($trans->source->source_id > 0) {
                $sdao = getSourceDAO();
                $sdao->getSources($trans->source);
                if ($trans->source->numResults > 0) {
                    $trans->source = $trans->source->results[0];
                }
            }
            $ret = $trans;
        } else {
            $ret = $trans->results[0];
        }
    }
    return $ret;
}
Esempio n. 9
0
function get_parent($parent)
{
    global $datefmt, $tblprefix, $strBorn, $strDied, $restrictdate, $level, $err_father, $err_mother, $grid, $strLivingPerson, $countlines, $outputstring, $htmlstring, $gridsize;
    $peep = new PersonDetail();
    $peep->person_id = $parent;
    $peep->queryType = Q_IND;
    $dao = getPeopleDAO();
    $dao->getPersonDetails($peep);
    // check if there is a parent
    if ($peep->numResults != 1) {
        return;
    } else {
        $per = $peep->results[0];
    }
    $level += 1;
    // ---- position father
    $fhtmlstring = "<div style=\"position: absolute; left: " . a2p($level) . "px;\">";
    $fhtmlstring .= "(" . $level . ") ";
    $nextfather = $per->father->person_id;
    $nextmother = $per->mother->person_id;
    if ($nextfather != 0) {
        get_parent($nextfather);
    }
    $fhtmlstring .= $per->getFullLink();
    $fhtmlstring .= "</div> \n";
    // ---- grid lines
    if ($level > 0) {
        for ($y = 1; $y <= $level - 1; $y += 1) {
            if ($grid[$y] != 0) {
                $fhtmlstring .= "<img alt=\"\" src=\"images/point.gif\" height=\"16\" width=\"1\" style=\"position: absolute; left: " . (a2p($y - 1) + 7) . "px;\" border=\"0\">\n";
            }
        }
        $fhtmlstring .= "<img alt=\"\" src=\"images/point-";
        if ($per->gender == "M") {
            $fhtmlstring .= "m";
            $grid[$level] = 1;
        } else {
            $fhtmlstring .= "f";
            $grid[$level] = 0;
        }
        $fhtmlstring .= ".gif\" height=\"16\" width=\"" . ($gridsize - 9) . "\" style=\"position: absolute; left: " . (a2p($y - 1) + 7) . "px;\" border=\"0\">\n";
    }
    // ---- end grid lines
    $fhtmlstring .= "<br> \n";
    $outputstring[] = $fhtmlstring;
    $countlines += 1;
    if ($nextmother != 0) {
        $grid[$level + 1] = 1;
        get_parent($nextmother);
    } else {
        $grid[$level + 1] = 0;
    }
    $level -= 1;
    // end get parents
}
Esempio n. 10
0
function get_edit_form($search)
{
    global $strYear, $strSource, $strSchedule;
    global $strSubmit, $strReset;
    ?>



<!--Fill out the form-->
<form method="post" action="passthru.php?area=census">

	<input type="hidden" name="person" value="<?php 
    echo $search->event->person->person_id;
    ?>
"/>
	<input type="hidden" name="d1type" value="8" size="30" />
	<input type="hidden" name="date1" id="date1" value="<?php 
    echo $search->event->date1;
    ?>
" size="30" />
	<input type="hidden" name="etype" value="<?php 
    echo CENSUS_EVENT;
    ?>
" />
	<table>
		<tr><td><table><tr><th></th><?php 
    showEventHeaderFields(CENSUS_EVENT);
    ?>
<th><?php 
    echo $strSchedule;
    ?>
</th></tr>
		<tr><td class="tbl_even"><?php 
    list_censuses("frmYear", $search->census);
    ?>
</td>
		<?php 
    showEventEditCols($search->event, CENSUS_EVENT);
    ?>
		<td class="tbl_even"><input type="text" name="schedule" value="<?php 
    echo $search->schedule;
    ?>
"/></td>
		</tr>
		</table>
		</td></tr>
		<tr>
		<td class="tbl_even">
		<?php 
    $sp = $search->event->person;
    $sp = $search->person;
    $people = array($sp);
    $rel = new Relationship();
    $rel->person = $sp;
    $dao = getRelationsDAO();
    $dao->getRelationshipDetails($rel);
    if ($rel->numResults > 0) {
        $spouses = $rel->results;
        foreach ($spouses as $partner) {
            $relation = $partner->relation;
            if (isset($relation) && $relation->person_id > 0 && $relation->isEditable()) {
                $people[] = $relation;
            }
        }
    }
    $dao = getPeopleDAO();
    $per = $sp;
    if ($dao->getChildren($per) > 0) {
        foreach ($per->children as $child) {
            if ($child->isEditable()) {
                $people[] = $child;
            }
        }
    }
    attendeeEditTable($search->event, CENSUS_EVENT, $people);
    ?>
</table></td>
		</tr>
		<tr>
			<td class="tbl_even"><input type="submit" name="Submit1" value="<?php 
    echo $strSubmit;
    ?>
" /></td>
			<td class="tbl_even"><input type="reset" name="Reset1" value="<?php 
    echo $strReset;
    ?>
" /></td>
		</tr>
	</table>
</form>
<?php 
}
Esempio n. 11
0
function selectPeople($form, $omit = 0, $gender = "A", $default = 0, $auto = 1, $date = 0, $type = 0)
{
    global $strOnFile, $strSelect, $strInvalidPerson;
    /**
    <!-- assumes
        <style type="text/css">
            @import "http://o.aolcdn.com/dojo/1.0.2/dijit/themes/tundra/tundra.css";
            @import "http://o.aolcdn.com/dojo/1.0.2/dojo/dojo.css"
        </style>
        <script type="text/javascript" src="http://o.aolcdn.com/dojo/1.0.2/dojo/dojo.xd.js"
                djConfig="parseOnLoad: true"></script>
        <body class="tundra">
    -->*/
    $search = new PersonDetail();
    $search->queryType = Q_COUNT;
    $search->person_id = $omit;
    $search->gender = $gender;
    if ($date != 0) {
        $search->date_of_birth = $date;
    }
    $dao = getPeopleDAO();
    $callback = '';
    $config = Config::getInstance();
    $dojo = false;
    if ($config->dojo) {
        $dojo = true;
    }
    if (!$dojo) {
        $callback = "displayPersonOption";
        echo "<select name=\"" . $form . "\" size=\"1\"";
        //if needed, set form to auto submit
        if ($auto == 1) {
            echo " onchange=\"this.form.submit()\"";
        }
        echo ">\n";
        if ($default <= 0) {
            echo "<option value=\"0\">" . $strSelect . "</option>\n";
        }
        $search->queryType = Q_TYPE;
        $search->person_id = $default;
        $dao->getPersonDetails($search, $callback);
        echo "</select>\n";
    } else {
        $search->queryType = Q_COUNT;
        $dao->getPersonDetails($search);
        $store = $form . "_peopleStore";
        ?>
    <script type="text/javascript">

require([
    "dojo/ready", "dojo/store/JsonRest", "dijit/form/FilteringSelect", "dojo/on"
], function(ready, JsonRest, FilteringSelect, on){
	if (!peopleStore) {
		var peopleStore = new Array();
	}
   	peopleStore["<?php 
        echo $form;
        ?>
"] = new JsonRest({ target:"services/peopleService/person/", idProperty: "personid"});
    ready(function(){
        var filteringSelect = new FilteringSelect({
            id: "<?php 
        echo $form;
        ?>
",
            name: "<?php 
        echo $form;
        ?>
",
	    style: "width: 400px;",
	    query: { gender:'<?php 
        echo $gender;
        ?>
', 
			date:'<?php 
        echo $date;
        ?>
', 
			omit:'<?php 
        echo $omit;
        ?>
'
		   },
	<?php 
        if ($default > 0) {
            echo " value:\"" . $default . "\",";
        }
        ?>
            store: peopleStore["<?php 
        echo $form;
        ?>
"],
            searchAttr: "name",
	    autoComplete: false
        }, <?php 
        echo $form;
        ?>
);
/* Unfortunately onchange uses the new value instead of the event */
	<?php 
        if ($auto == 1) {
            ?>
	on(filteringSelect, "change", function(val) {
		if (val != "") {
			require(["dojo/dom"], function (dom) {
			dom.byId("<?php 
            echo $form;
            ?>
").form.submit();
			});
		}
	});
	<?php 
        }
        ?>
    });
});
</script>

<input id="<?php 
        echo $form;
        ?>
" style="width: 400px;">

<?php 
    }
    echo "<br/>";
    // show the number of people in the list
    if ($gender == "A" && $omit == 0) {
        echo $search->numResults . " " . $strOnFile;
    }
    if ($gender == "A" && $omit != 0) {
        echo $search->numResults + 1 . " " . $strOnFile;
    }
}
Esempio n. 12
0
function make_Descendants($per, $linee = false)
{
    global $tblprefix, $strBorn, $strDied, $strLivingPerson, $strDeceasedPerson, $grid, $level;
    $level += 1;
    $grid[$level] = 1;
    $lines = 0;
    $per->queryType = Q_IND;
    $dao = getPeopleDAO();
    $dao->getChildren($per);
    /*
    // $linee[]=$per->person_id;
    $arr = array();
    // while ($segment = array_pop($path)) {
    $tmp = array($per->person_id => $per->getDisplayName());
    //}
    $arr = $tmp;
    print_r($arr);
    // viewarray($arr);
    exit;
    */
    if (isset($per->children)) {
        foreach ($per->children as $child) {
            /*
            $arr = array();
            $tmp = array($per->person_id => $per->getDisplayName());
            $arr = $tmp;
            */
            $ln = "";
            // gridline
            for ($y = 1; $y < $level; $y += 1) {
                // gridsurpression
                if ($grid[$y] != -1) {
                    $ln .= "I";
                    // "|"; // &#9474;";
                } else {
                    $ln .= "S";
                    // ".";
                }
            }
            // Arrows:
            $totalrows = count($per->children);
            $lines += 1;
            // if not last in array T-arrow:
            if ($totalrows != $lines) {
                $ln .= "T";
                // "-"; //&#9500;";
            } else {
                // Final L-arrow if last in array
                $ln .= "L";
                // "_"; // &#9492;";
                $grid[$level] = -1;
            }
            // textposition
            //$ln.=a2p($level);
            $ln .= "({$level}) ";
            $icona = "";
            // MODIFICA 20120506
            if ($child->gender == "M") {
                $icona = "* ";
                //&#923;&nbsp;";
            } else {
                $icona = "o ";
                //&#916;&nbsp;";
            }
            $ln .= $icona . $child->getDisplayName();
            $ln .= get_spouse_string($child);
            $linee[] = $ln;
            /*
            $tmp = array($child->person_id => $ln);
            $arr[]=$tmp;
            // viewarray($arr);
            exit;
            */
            // viewarray($linee);
            $linee = make_Descendants($child, $linee);
            $level -= 1;
        }
        return $linee;
        // completato
    } else {
        return $linee;
    }
}
Esempio n. 13
0
function show_pedigree($per)
{
    global $ids;
    // if trying to access a restriced person
    if (!$per->isViewable()) {
        die(include "inc/forbidden.inc.php");
    }
    $dao = getPeopleDAO();
    $dao->getParents($per);
    // Use an array to get people references
    $ids = array_fill(1, 15, 0);
    $ids[1] = $per;
    $ids[2] = $per->father;
    $ids[3] = $per->mother;
    for ($i = 2; $i < 8; $i++) {
        if (isset($ids[$i])) {
            $p = $ids[$i];
            $dao->getParents($p);
            $ids[$i * 2] = $p->father;
            $ids[$i * 2 + 1] = $p->mother;
        }
    }
    ?>

<!--Main body-->

<table width="100%" cellspacing="0">
  <tbody>
    <tr> <!--row 1-->
      <td width="22%">  </td>
      <td width="4%">  </td>
      <td width="22%">  </td>
      <td width="4%">  </td>
      <td width="22%">  </td>
<?php 
    person_disp($ids, 8, "tr", 4);
    ?>
    </tr>
    <tr> <!--row 2-->
      <td>  </td>
      <td>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 4, "tr");
    ?>
      <td>  </td>
    </tr>
    <tr> <!--row 3-->
      <td>  </td>
      <td>  </td>
      <td>  </td>
      <td<?php 
    if (isset($ids[4]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 9, "br");
    ?>
    </tr>
    <tr> <!--row 4-->
      <td>  </td>
<?php 
    person_disp($ids, 2, "tr");
    ?>
      <td>  </td>
      <td>  </td>
      <td>  </td>
    </tr>
    <tr> <!--row 5-->
      <td>  </td>
      <td<?php 
    if (isset($ids[2]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
></td>
      <td>  </td>
      <td<?php 
    if (isset($ids[5]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 10, "tr");
    ?>
    </tr>
    <tr> <!--row 6-->
      <td>  </td>
      <td<?php 
    if (isset($ids[2]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
></td>
      <td>  </td>
<?php 
    person_disp($ids, 5, "br");
    ?>
      <td>  </td>
    </tr>
    <tr> <!--row 7-->
      <td>  </td>
      <td<?php 
    if (isset($ids[2]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
></td>
      <td>  </td>
      <td>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 11, "br");
    ?>
    </tr>
    <tr> <!--row 8-->
<?php 
    person_disp($ids, 1);
    ?>
      <td>  </td>
      <td>  </td>
      <td>  </td>
      <td>  </td>
      <td>  </td>
    </tr>
    <tr> <!--row 9-->
      <td>  </td>
      <td<?php 
    if (isset($ids[3]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
> </td>
      <td>  </td>
      <td>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 12, "tr");
    ?>
    </tr>
    <tr> <!--row 10-->
      <td>  </td>
      <td<?php 
    if (isset($ids[3]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
></td>
      <td>  </td>
<?php 
    person_disp($ids, 6, "tr");
    ?>
      <td>  </td>
    </tr>
    <tr> <!--row 11-->
      <td>  </td>
      <td<?php 
    if (isset($ids[3]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
></td>
      <td>  </td>
      <td<?php 
    if (isset($ids[6]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 13, "br");
    ?>
    </tr>
    <tr> <!--row 12-->
      <td>  </td>
<?php 
    person_disp($ids, 3, "br");
    ?>
      <td>  </td>
      <td>  </td>
      <td>  </td>
    </tr>
    <tr> <!--row 13-->
      <td>  </td>
      <td>  </td>
      <td>  </td>
      <td<?php 
    if (isset($ids[7]->person_id)) {
        echo " class=\"vert\"";
    }
    ?>
>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 14, "tr");
    ?>
    </tr>
    <tr> <!--row 14-->
      <td>  </td>
      <td>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 7, "br");
    ?>
      <td>  </td>
    </tr>
    <tr> <!--row 15-->
      <td>  </td>
      <td>  </td>
      <td>  </td>
      <td>  </td>
      <td>  </td>
<?php 
    person_disp($ids, 15, "br");
    ?>
    </tr>
  </tbody>
</table>

<!--End of main body-->
<?php 
}
Esempio n. 14
0
 function stampAttendees($e)
 {
     $pdao = getPeopleDAO();
     foreach ($e->attendees as $a) {
         if ($a->changed == false) {
             continue;
         }
         $peep = $a->person;
         $peep->queryType = Q_IND;
         $pdao->getPersonDetails($peep);
         $peep = $peep->results[0];
         if (!$peep->isEditable()) {
             die(include "inc/forbidden.inc.php");
         }
         stamppeeps($peep);
     }
 }
Esempio n. 15
0
function make_Descendants($per)
{
    global $tblprefix, $strBorn, $strDied, $strLivingPerson, $strDeceasedPerson, $grid, $level;
    $level += 1;
    $grid[$level] = 1;
    $lines = 0;
    $per->queryType = Q_IND;
    $dao = getPeopleDAO();
    $dao->getChildren($per);
    foreach ($per->children as $child) {
        echo "<br>\n";
        // textposition
        echo "<div style=\"position: absolute; left: " . a2p($level) . "px;\">";
        echo "({$level}) ";
        $icona = "";
        // MODIFICA 20120506
        if ($child->gender == "M") {
            $icona = "&#923;&nbsp;";
        } else {
            $icona = "&#916;&nbsp;";
        }
        echo $icona . $child->getFullLink();
        echo get_spouse_string($child) . "</div>\n";
        // gridline
        for ($y = 1; $y < $level; $y += 1) {
            // gridsurpression
            if ($grid[$y] != -1) {
                echo "<img alt=\"\" src=\"images/point.gif\" height=\"16\" width=\"1\" style=\"position: absolute; left: " . (a2p($y) - 25) . "px;\" border=\"0\">\n";
            }
        }
        // Arrows:
        $totalrows = count($per->children);
        $lines += 1;
        // if not last in array T-arrow:
        if ($totalrows != $lines) {
            echo "<img alt=\"\" src=\"images/point-d.gif\" height=\"16\" width=\"21\" style=\"position: absolute; left: " . (a2p($level) - 25) . "px;\" border=\"0\">\n";
        } else {
            // Final L-arrow if last in array
            echo "<img alt=\"\" src=\"images/point-l.gif\" height=\"16\" width=\"21\" style=\"position: absolute; left: " . (a2p($level) - 25) . "px;\" border=\"0\">\n";
            $grid[$level] = -1;
        }
        make_Descendants($child);
        $level -= 1;
    }
}