'); define('WT_ICON_BRANCHES', "\"\""); //-- args $surn = safe_GET('surn', '[^<>&%{};]*'); $surn = utf8_strtoupper($surn); $soundex_std = safe_GET_bool('soundex_std'); $soundex_dm = safe_GET_bool('soundex_dm'); $ged = safe_GET('ged'); if (empty($ged)) { $ged = $GEDCOM; } //-- rootid $rootid = ""; if (WT_USER_ID) { $rootid = WT_USER_ROOT_ID; if (empty($_SESSION['user_ancestors']) || $_SESSION['user_ancestors'][1]!==$rootid) { unset($_SESSION['user_ancestors']); load_ancestors_array($rootid); } } //-- random surname if ($surn=='*') { $surn = array_rand(get_indilist_surns("", "", false, true, WT_GED_ID)); } //-- form print_header(i18n::translate('Branches')." - ".$surn); if ($ENABLE_AUTOCOMPLETE) { require WT_ROOT.'/js/autocomplete.js.htm'; } ?>


/> />

", WT_ICON_BRANCHES, " ", PrintReady($surn), ""; $indis = indis_array($surn, $soundex_std, $soundex_dm); echo "
    "; foreach ($indis as $k=>$person) { $famc = $person->getPrimaryChildFamily(); if (!$famc || (!array_key_exists($famc->getHusbId(), $indis)) && !array_key_exists($famc->getWifeId(), $indis)) { print_fams($person); } } echo "
"; echo ""; if ($rootid) { $person = Person::getInstance($rootid); echo "

", i18n::translate('Pedigree chart root person'), " : getXref(), "\" href=\"{$person->getHtmlUrl()}\">{$person->getFullName()}"; echo "
".i18n::translate('Direct line ancestors')." : ", count($_SESSION['user_ancestors']), "

"; } } print_footer(); function print_fams($person, $famid=null) { global $UNKNOWN_NN, $PEDI_CODES, $PEDI_CODES_F, $PEDI_CODES_M, $surn, $surn_script, $TEXT_DIRECTION; // select person name according to searched surname $person_name = ""; foreach ($person->getAllNames() as $n=>$name) { list($surn1) = explode(", ", $name['list']); if (stripos($surn1, $surn)===false && stripos($surn, $surn1)===false && soundex_std($surn1)!==soundex_std($surn) && soundex_dm($surn1)!==soundex_dm($surn) ) { continue; } if (utf8_script($surn1)!==$surn_script) { continue; } $person_name = $name['full']; break; } if (empty($person_name)) { echo "getFullName())), "\">", $person->getSexImage(), "..."; return; } $person_script = utf8_script($person_name); // current indi echo "
  • "; $class = ""; $sosa = @array_search($person->getXref(), $_SESSION['user_ancestors']); if ($sosa) { $class = "search_hit"; $sosa = "getBoxStyle()}\" title=\"Sosa\" href=\"relationship.php?pid2=".WT_USER_ROOT_ID."&pid1=".$person->getXref()."\"> {$sosa} ".sosa_gen($sosa); } $current = $person->getSexImage(). "getXref()."\" href=\"{$person->getHtmlUrl()}\">".PrintReady($person_name)." ". $person->getBirthDeathYears()." {$sosa}"; if ($famid && $person->getChildFamilyPedigree($famid)) { $sex = $person->getSex(); $famcrec = get_sub_record(1, "1 FAMC @".$famid."@", $person->getGedcomRecord()); $pedi = get_gedcom_value("PEDI", 2, $famcrec, '', false); if ($sex=="F" && isset($PEDI_CODES_F[$pedi])) $label = $PEDI_CODES_F[$pedi]; else if ($sex=="M" && isset($PEDI_CODES_M[$pedi])) $label = $PEDI_CODES_M[$pedi]; else if (isset($PEDI_CODES[$pedi])) $label = $PEDI_CODES[$pedi]; $current = "".$label." ".$current; } // spouses and children if (count($person->getSpouseFamilies())<1) { echo $current; } foreach ($person->getSpouseFamilies() as $f=>$family) { $txt = $current; $spouse = $family->getSpouse($person); if ($spouse) { $class = ""; $sosa2 = @array_search($spouse->getXref(), $_SESSION['user_ancestors']); if ($sosa2) { $class = "search_hit"; $sosa2 = "getBoxStyle()}\" title=\"Sosa\" href=\"relationship.php?pid2=".WT_USER_ROOT_ID."&pid1=".$spouse->getXref()."\"> {$sosa2} ".sosa_gen($sosa2); } if ($family->getMarriageYear()) { $txt .= " getMarriageDate()->Display())."\">".WT_ICON_RINGS.$family->getMarriageYear()." "; } else if ($family->getMarriage()) { $txt .= " ".WT_ICON_RINGS." "; } $spouse_name = $spouse->getListName(); foreach ($spouse->getAllNames() as $n=>$name) { if (utf8_script($name['list']) == $person_script) { $spouse_name = $name['list']; break; } //How can we use check_NN($names) or something else to replace the unknown unknown name from the page language to the language of the spouse's name? else if ($name['fullNN']=="@P.N. @N.N.") { $spouse_name = $UNKNOWN_NN[$person_script].", ".$UNKNOWN_NN[$person_script]; break; } } list($surn2, $givn2) = explode(", ", $spouse_name.", x"); $txt .= $spouse->getSexImage(). "getXref()."\" href=\"{$family->getHtmlUrl()}\">".PrintReady($givn2)." ". "".PrintReady($surn2)." ". $spouse->getBirthDeathYears()." {$sosa2}"; } echo $txt; echo "
      "; foreach ($family->getChildren() as $c=>$child) { print_fams($child, $family->getXref()); } echo "
    "; } echo "
  • "; } function load_ancestors_array($xref, $sosa=1) { if ($xref) { $_SESSION['user_ancestors'][$sosa] = $xref; $person = Person::getInstance($xref); $famc = $person->getPrimaryChildFamily(); if ($famc) { load_ancestors_array($famc->getHusbId(), $sosa*2); load_ancestors_array($famc->getWifeId(), $sosa*2+1); } } } function indis_array($surn, $soundex_std, $soundex_dm) { $sql= "SELECT DISTINCT n_id". " FROM `##name`". " WHERE n_file=?". " AND n_type!=?". " AND (n_surn=? OR n_surname=?"; $args=array(WT_GED_ID, '_MARNM', $surn, $surn); if ($soundex_std) { $sql .= " OR n_soundex_surn_std=?"; $args[]=soundex_std($surn); } if ($soundex_dm) { $sql .= " OR n_soundex_surn_dm=?"; $args[]=soundex_dm($surn); } $sql .= ") ORDER BY n_sort"; $rows= WT_DB::prepare($sql) ->execute($args) ->fetchAll(); $data=array(); foreach ($rows as $row) { $data[$row->n_id]=Person::getInstance($row->n_id); } return $data; } function sosa_gen($sosa) { $gen = (int)log($sosa, 2)+1; return "{$gen}"; }