pid =safe_GET_xref('pid'); $this->show_full =safe_GET('show_full', array('0', '1'), $PEDIGREE_FULL_DETAILS); $this->chart_style=safe_GET_integer('chart_style', 0, 3, 0); $this->generations=safe_GET_integer('generations', 2, $MAX_DESCENDANCY_GENERATIONS, $DEFAULT_PEDIGREE_GENERATIONS); $this->box_width =safe_GET_integer('box_width', 50, 300, 100); // This is passed as a global. A parameter would be better... $show_full=$this->show_full; if (!isset($this->personcount)) $this->personcount = 1; $this->Dbwidth*=$this->box_width/100; if (!$this->show_full) { $bwidth *= $this->box_width / 150; } else { $bwidth*=$this->box_width/100; } if (!$this->show_full) { $bheight = $bheight / 1.5; } $pbwidth = $bwidth+12; $pbheight = $bheight+14; $this->show_changes=safe_GET('show_changes'); $this->action =safe_GET('action'); // Validate form variables $this->pid=check_rootid($this->pid); if (strlen($this->name)<30) $this->cellwidth="420"; else $this->cellwidth=(strlen($this->name)*14); $this->descPerson = Person::getInstance($this->pid); $this->name=$this->descPerson->getFullName(); //-- if the person is from another gedcom then forward to the correct site /* if ($this->indi->isRemote()) { header('Location: '.$this->indi->getRawUrl()); exit; } */ } /** * print a child family * * @param string $pid individual Gedcom Id * @param int $depth the descendancy depth to show */ function print_child_family(&$person, $depth, $label="1.", $gpid="") { global $personcount; if (is_null($person)) return; $families = $person->getSpouseFamilies(); if ($depth<2) return; foreach ($families as $famid => $family) { print_sosa_family($family->getXref(), "", -1, $label, $person->getXref(), $gpid, $personcount); $personcount++; $children = $family->getChildren(); $i=1; foreach ($children as $child) { $this->print_child_family($child, $depth-1, $label.($i++).".", $person->getXref()); } } } /** * print a child descendancy * * @param string $pid individual Gedcom Id * @param int $depth the descendancy depth to show */ function print_child_descendancy(&$person, $depth) { global $WT_IMAGES, $Dindent, $personcount; if (is_null($person)) return; //print_r($person); echo "
  • "; echo ""; // check if child has parents and add an arrow echo ""; echo ""; echo "
    "; if ($depth==$this->generations) echo "\"\""; else { echo "\"\""; echo "\"\""; } print_pedigree_person($person->getXref(), 1, 0, $personcount); echo " "; $sfamids = $person->getChildFamilies(); foreach ($sfamids as $famid => $family) { $parents = find_parents($famid); if ($parents) { $parid=$parents["HUSB"]; if ($parid=="") $parid=$parents["WIFE"]; if ($parid!="") { print_url_arrow($parid.$personcount.$person->getXref(), "?pid={$parid}&generations={$this->generations}&chart_style={$this->chart_style}&show_full={$this->show_full}&box_width={$this->box_width}", i18n::translate('Start at parents'), 2); $personcount++; } } } // d'Aboville child number $level =$this->generations-$depth; if ($this->show_full) echo "

     "; echo ""; //needed so that RTL languages will display this properly if (!isset($this->dabo_num[$level])) $this->dabo_num[$level]=0; $this->dabo_num[$level]++; $this->dabo_num[$level+1]=0; $this->dabo_sex[$level]=$person->getSex(); for ($i=0; $i<=$level;$i++) { $isf=$this->dabo_sex[$i]; if ($isf=="M") $isf=""; if ($isf=="U") $isf="NN"; echo " ".$this->dabo_num[$i]." "; if ($i<$level) echo "."; } echo ""; echo "
    "; echo "
  • "; // loop for each spouse $sfam = $person->getSpouseFamilies(); foreach ($sfam as $famid => $family) { $personcount++; $this->print_family_descendancy($person, $family, $depth); } } /** * print a family descendancy * * @param string $pid individual Gedcom Id * @param Family $famid family record * @param int $depth the descendancy depth to show */ function print_family_descendancy(&$person, &$family, $depth) { global $GEDCOM, $WT_IMAGES, $Dindent, $personcount; if (is_null($family)) return; if (is_null($person)) return; $famrec = $family->getGedcomRecord(); $famid = $family->getXref(); $parents = find_parents($famid); if ($parents) { // spouse id $id = $parents["WIFE"]; if ($id==$person->getXref()) $id = $parents["HUSB"]; // print marriage info echo "
  • "; echo "\"\""; echo ""; echo "\"".i18n::translate('View"; $marriage = $family->getMarriage(); if ($marriage->canShow()) { echo ' '; $marriage->print_simple_fact(); echo ''; } echo ''; // print spouse echo ""; echo "
  • "; } } }