pid = safe_GET_xref('pid');
$pid = $this->pid;
$gedrec = find_person_record($this->pid, WT_GED_ID);
if ($USE_RIN && $gedrec==false) {
$this->pid = find_rin_id($this->pid);
$gedrec = find_person_record($this->pid, WT_GED_ID);
}
if (empty($gedrec)) {
$ct = preg_match('/(\w+):(.+)/', $this->pid, $match);
if ($ct>0) {
$servid = trim($match[1]);
$remoteid = trim($match[2]);
require_once WT_ROOT.'includes/classes/class_serviceclient.php';
$service = ServiceClient::getInstance($servid);
if ($service != null) {
$newrec= $service->mergeGedcomRecord($remoteid, "0 @".$this->pid."@ INDI\n1 RFN ".$this->pid, false);
$gedrec = $newrec;
}
} else {
$gedrec = "0 @".$this->pid."@ INDI\n";
}
}
if (WT_USER_ID) {
// Start with the user's default tab
$this->default_tab=get_user_setting(WT_USER_ID, 'defaulttab');
} else {
// Start with the gedcom's default tab
$this->default_tab=get_gedcom_setting(WT_GED_ID, 'GEDCOM_DEFAULT_TAB');
}
if (find_person_record($this->pid, WT_GED_ID) || find_updated_record($this->pid, WT_GED_ID)!==null) {
$this->indi = new Person($gedrec, false);
$this->indi->ged_id=WT_GED_ID; // This record is from a file
} else if (!$this->indi) {
return false;
}
$this->$pid=$this->indi->getXref(); // Correct upper/lower case mismatch
//-- perform the desired action
switch($this->action) {
case 'addfav':
if (WT_USER_ID && !empty($_REQUEST['gid']) && array_key_exists('user_favorites', WT_Module::getActiveModules())) {
$favorite = array(
'username' => WT_USER_NAME,
'gid' => $_REQUEST['gid'],
'type' => 'INDI',
'file' => WT_GEDCOM,
'url' => '',
'note' => '',
'title' => ''
);
user_favorites_WT_Module::addFavorite($favorite);
}
unset($_GET['action']);
break;
case 'accept':
if (WT_USER_CAN_ACCEPT) {
accept_all_changes($this->pid, WT_GED_ID);
$this->show_changes=false;
$this->accept_success=true;
//-- check if we just deleted the record and redirect to index
$gedrec = find_person_record($this->pid, WT_GED_ID);
if (empty($gedrec)) {
header('Location: '.WT_SERVER_NAME.WT_SCRIPT_PATH);
exit;
}
$this->indi = new Person($gedrec);
}
unset($_GET['action']);
break;
case 'undo':
if (WT_USER_CAN_ACCEPT) {
reject_all_changes($this->pid, WT_GED_ID);
$this->show_changes=false;
$this->accept_success=true;
$gedrec = find_person_record($this->pid, WT_GED_ID);
//-- check if we just deleted the record and redirect to index
if (empty($gedrec)) {
header('Location: '.WT_SERVER_NAME.WT_SCRIPT_PATH);
exit;
}
$this->indi = new Person($gedrec);
}
unset($_GET['action']);
break;
}
//-- if the user can edit and there are changes then get the new changes
if ($this->show_changes && WT_USER_CAN_EDIT) {
$newrec = find_updated_record($this->pid, WT_GED_ID);
if ($newrec) {
//-- get the changed record from the file
//print("jkdsakjhdkjsadkjsakjdhsakd".$newrec);
$remoterfn = get_gedcom_value("RFN", 1, $newrec);
} else {
$remoterfn = get_gedcom_value("RFN", 1, $gedrec);
}
// print "remoterfn=".$remoterfn;
//-- get an updated record from the web service
if (!empty($remoterfn)) {
$parts = explode(':', $remoterfn);
if (count($parts)==2) {
$servid = $parts[0];
$aliaid = $parts[1];
if (!empty($servid)&&!empty($aliaid)) {
require_once WT_ROOT.'includes/classes/class_serviceclient.php';
$serviceClient = ServiceClient::getInstance($servid);
if (!is_null($serviceClient)) {
if (!empty($newrec)) $mergerec = $serviceClient->mergeGedcomRecord($aliaid, $newrec, true);
else $mergerec = $serviceClient->mergeGedcomRecord($aliaid, $gedrec, true);
if ($serviceClient->type=="remote") {
$newrec = $mergerec;
}
else {
$gedrec = $mergerec;
}
}
}
}
}
if (!empty($newrec)) {
$this->diffindi = new Person($newrec, false);
$this->diffindi->setChanged(true);
$gedrec = $newrec;
}
}
if ($this->show_changes) {
$this->indi->diffMerge($this->diffindi);
}
//-- only allow editors or users who are editing their own individual or their immediate relatives
if ($this->indi->canDisplayDetails()) {
$this->canedit = WT_USER_CAN_EDIT;
}
// Initialise tabs
$this->tabs = WT_Module::getActiveTabs();
foreach ($this->tabs as $mod) {
$mod->setController($this);
if ($mod->hasTabContent()) {
if (empty($this->default_tab)) {
$this->default_tab=$mod->getName();
}
}
}
if (!isset($_SESSION['WT_pin']) && $DEFAULT_PIN_STATE)
$_SESSION['WT_pin'] = true;
if (!isset($_SESSION['WT_sb_closed']) && $DEFAULT_SB_CLOSED_STATE)
$_SESSION['WT_sb_closed'] = true;
//-- handle ajax calls
if ($this->action=="ajax") {
$tab = 0;
if (isset($_REQUEST['module'])) {
$tabname = $_REQUEST['module'];
header("Content-Type: text/html; charset=UTF-8"); //AJAX calls do not have the meta tag headers and need this set
$mod = $this->tabs[$tabname];
if ($mod) {
echo $mod->getTabContent();
// Allow the other tabs to modify this one - e.g. lightbox does this.
echo WT_JS_START;
foreach (WT_Module::getActiveTabs() as $module) {
echo $module->getJSCallback();
}
echo WT_JS_END;
}
}
if (isset($_REQUEST['pin'])) {
if ($_REQUEST['pin']=='true') $_SESSION['WT_pin'] = true;
else $_SESSION['WT_pin'] = false;
}
if (isset($_REQUEST['sb_closed'])) {
if ($_REQUEST['sb_closed']=='true') $_SESSION['WT_sb_closed'] = true;
else $_SESSION['WT_sb_closed'] = false;
}
//-- only get the requested tab and then exit
if (WT_DEBUG_SQL) {
echo WT_DB::getQueryLog();
}
exit;
}
}
/**
* return the title of this page
* @return string the title of the page to go in the
tags
*/
function getPageTitle() {
if ($this->indi) {
return $this->indi->getFullName();
} else {
return i18n::translate('Unable to find record with ID');
}
}
/**
* check if we can show the highlighted media object
* @return boolean
*/
function canShowHighlightedObject() {
global $MULTI_MEDIA, $SHOW_HIGHLIGHT_IMAGES, $USE_SILHOUETTE, $WT_IMAGES;
if (($this->indi->canDisplayDetails()) && ($MULTI_MEDIA && $SHOW_HIGHLIGHT_IMAGES)) {
$firstmediarec = $this->indi->findHighlightedMedia();
if ($firstmediarec) return true;
}
if ($USE_SILHOUETTE && isset($WT_IMAGES["default_image_U"])) { return true; }
return false;
}
/**
* check if we can show the gedcom record
* @return boolean
*/
function canShowGedcomRecord() {
global $SHOW_GEDCOM_RECORD;
if (WT_USER_CAN_EDIT && $SHOW_GEDCOM_RECORD && $this->indi->canDisplayDetails())
return true;
}
/**
* check if use can edit this person
* @return boolean
*/
function userCanEdit() {
return $this->canedit;
}
/**
* get the highlighted object HTML
* @return string HTML string for the
tag
*/
function getHighlightedObject() {
global $USE_THUMBS_MAIN, $THUMBNAIL_WIDTH, $USE_MEDIA_VIEWER, $GEDCOM, $WT_IMAGES, $USE_SILHOUETTE, $sex;
if ($this->canShowHighlightedObject()) {
$firstmediarec = $this->indi->findHighlightedMedia();
if (!empty($firstmediarec)) {
$filename = thumb_or_main($firstmediarec); // Do we send the main image or a thumbnail?
if (!$USE_THUMBS_MAIN || $firstmediarec["_THUM"]=='Y') {
$class = "image";
} else {
$class = "thumbnail";
}
$isExternal = isFileExternal($filename);
if ($isExternal && $class=="thumbnail") $class .= "\" width=\"".$THUMBNAIL_WIDTH;
if (!empty($filename)) {
$result = "";
$imgsize = findImageSize($firstmediarec["file"]);
$imgwidth = $imgsize[0]+40;
$imgheight = $imgsize[1]+150;
//Gets the Media View Link Information and Concatenate
$mid = $firstmediarec['mid'];
$name = $this->indi->getFullName();
if (WT_USE_LIGHTBOX) {
echo "";
} else if (!$USE_MEDIA_VIEWER && $imgsize) {
$result .= "";
} else {
$result .= "";
}
$result .= "
";
$result .= "";
return $result;
}
}
}
if ($USE_SILHOUETTE && isset($WT_IMAGES["default_image_U"])) {
$class = "\" width=\"".$THUMBNAIL_WIDTH;
$sex = $this->indi->getSex();
$result = "
";
return $result;
}
}
/**
* print information for a name record
*
* Called from the individual information page
* @see individual.php
* @param Event $event the event object
*/
function print_name_record(&$event) {
global $UNDERLINE_NAME_QUOTES;
if (!$event->canShow()) {
return false;
}
$factrec = $event->getGedComRecord();
$linenum = $event->getLineNumber();
$this->name_count++;
echo '";
$dummy=new Person($factrec);
$dummy->setPrimaryName(0);
echo '
';
echo '
- ', i18n::translate('Name'), '
';
echo '- ', PrintReady($dummy->getFullName());
if ($this->userCanEdit() && !strpos($factrec, 'WT_OLD') && $this->name_count > 1) {
echo " pid."', ".$linenum."); return false;\">", i18n::translate('Edit'), " | ";
echo "pid."', ".$linenum."); return false;\">", i18n::translate('Delete'), "";
}
echo '
';
echo '
';
echo '
';
$ct = preg_match_all('/\n2 (\w+) (.*)/', $factrec, $nmatch, PREG_SET_ORDER);
for ($i=0; $i<$ct; $i++) {
echo '
';
$fact = trim($nmatch[$i][1]);
if (($fact!="SOUR")&&($fact!="NOTE")&&($fact!="GIVN")&&($fact!="SURN")&&($fact!="SPFX")) {
echo '
- ', translate_fact($fact, $this->indi), '
';
echo '- ';
if (isset($nmatch[$i][2])) {
$name = trim($nmatch[$i][2]);
$name = preg_replace("'/,'", ",", $name);
$name = preg_replace("'/'", " ", $name);
if ($UNDERLINE_NAME_QUOTES) {
$name=preg_replace('/"([^"]*)"/', '\\1', $name);
}
$name=preg_replace('/(\S*)\*/', '\\1', $name);
echo PrintReady($name);
}
echo '
';
echo '
';
}
echo '
';
}
if (preg_match("/\d (NOTE)|(SOUR)/", $factrec)>0) {
// -- find sources for this name
echo '
';
print_fact_sources($factrec, 2);
//-- find the notes for this name
print_fact_notes($factrec, 2);
echo '
';
}
echo '
';
}
/**
* print information for a sex record
*
* Called from the individual information page
* @see individual.php
* @param Event $event the Event object
*/
function print_sex_record(&$event) {
global $sex;
if (!$event->canShow()) return false;
$factrec = $event->getGedComRecord();
$sex = $event->getDetail();
if (empty($sex)) $sex = 'U';
echo '';
echo '
- ', i18n::translate('Gender'), '
';
echo '- ';
switch ($sex) {
case 'M':
echo i18n::translate('Male'), Person::sexImage('M', 'small', '', i18n::translate('Male'));
break;
case 'F':
echo i18n::translate('Female'), Person::sexImage('F', 'small', '', i18n::translate('Female'));
break;
case 'U':
echo i18n::translate_c('unknown gender', 'Unknown'), Person::sexImage('U', 'small', '', i18n::translate_c('unknown gender', 'Unknown'));
break;
}
if ($this->SEX_COUNT>1) {
if ($this->userCanEdit() && strpos($factrec, "WT_OLD")===false) {
if ($event->getLineNumber()=="new") {
echo "pid."', 'SEX'); return false;\">".i18n::translate('Edit')."";
} else {
echo "pid."', ".$event->getLineNumber()."); return false;\">".i18n::translate('Edit')." | ";
echo "pid."', ".$event->getLineNumber()."); return false;\">".i18n::translate('Delete')."";
}
}
}
echo '
';
echo '
';
// -- find sources
print_fact_sources($event->getGedComRecord(), 2);
//-- find the notes
print_fact_notes($event->getGedComRecord(), 2);
echo '
';
}
/**
* get edit menu
*/
function getEditMenu() {
global $TEXT_DIRECTION, $WT_IMAGES, $GEDCOM, $SHOW_GEDCOM_RECORD;
if (!$this->indi) return null;
if ($TEXT_DIRECTION=="rtl") {
$ff="_rtl";
} else {
$ff="";
}
// edit menu
$menu = new Menu(i18n::translate('Edit'));
$menu->addIcon('edit_indi');
$menu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}", 'icon_large_gedcom');
if (WT_USER_CAN_EDIT) {
//--make sure the totals are correct
$this->getGlobalFacts();
if ($this->total_names<2) {
$submenu = new Menu(i18n::translate('Edit name'));
$submenu->addOnclick("return edit_name('".$this->pid."', $this->NAME_LINENUM);");
$submenu->addIcon('edit_indi');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
}
$submenu = new Menu(i18n::translate('Add new Name'));
$submenu->addOnclick("return add_name('".$this->pid."');");
$submenu->addIcon('edit_indi');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
if ($this->SEX_COUNT<2) {
$submenu = new Menu(i18n::translate('Edit gender'));
if ($this->SEX_LINENUM=="new") {
$submenu->addOnclick("return add_new_record('".$this->pid."', 'SEX');");
} else {
$submenu->addOnclick("return edit_record('".$this->pid."', $this->SEX_LINENUM);");
}
$submenu->addIcon('edit_indi');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
}
if (count($this->indi->getSpouseFamilyIds())>1) {
$submenu = new Menu(i18n::translate('Reorder families'));
$submenu->addOnclick("return reorder_families('".$this->pid."');");
$submenu->addIcon('edit_fam');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
}
$menu->addSeparator();
}
// show/hide changes
if (find_updated_record($this->pid, WT_GED_ID)!==null) {
if (!$this->show_changes) {
$label = i18n::translate('This record has been updated. Click here to show changes.');
$link = $this->indi->getHtmlUrl().'&show_changes=yes';
} else {
$label = i18n::translate('Click here to hide changes.');
$link = $this->indi->getHtmlUrl().'&show_changes=no';
}
$submenu = new Menu($label, $link);
$submenu->addIcon('edit_indi');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
if (WT_USER_CAN_ACCEPT) {
$submenu = new Menu(i18n::translate('Undo all changes'), $this->indi->getHtmlUrl()."&action=undo");
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$submenu->addIcon('edit_indi');
$menu->addSubmenu($submenu);
$submenu = new Menu(i18n::translate('Approve all changes'), $this->indi->getHtmlUrl()."&action=accept");
$submenu->addIcon('edit_indi');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
}
$menu->addSeparator();
}
// edit/view raw gedcom
if (WT_USER_IS_ADMIN || $this->canShowGedcomRecord()) {
$submenu = new Menu(i18n::translate('Edit raw GEDCOM record'));
$submenu->addOnclick("return edit_raw('".$this->pid."');");
$submenu->addIcon('gedcom');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
} elseif ($SHOW_GEDCOM_RECORD) {
$submenu = new Menu(i18n::translate('View GEDCOM Record'));
$submenu->addIcon('gedcom');
if ($this->show_changes && WT_USER_CAN_EDIT) {
$submenu->addOnclick("return show_gedcom_record('new');");
} else {
$submenu->addOnclick("return show_gedcom_record();");
}
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
}
// delete
if (WT_USER_CAN_EDIT) {
$submenu = new Menu(i18n::translate('Delete this individual'));
$submenu->addOnclick("return deleteperson('".$this->pid."');");
$submenu->addIcon('edit_indi');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
}
// add to favorites
$submenu = new Menu(i18n::translate('Add to My Favorites'), $this->indi->getHtmlUrl()."&action=addfav&gid=".$this->pid);
$submenu->addIcon('favorites');
$submenu->addClass("submenuitem{$ff}", "submenuitem_hover{$ff}", "submenu{$ff}");
$menu->addSubmenu($submenu);
//-- get the link for the first submenu and set it as the link for the main menu
if (isset($menu->submenus[0])) {
$link = $menu->submenus[0]->onclick;
$menu->addOnclick($link);
}
return $menu;
}
/**
* get global facts
* global facts are NAME and SEX
* @return array return the array of global facts
*/
function getGlobalFacts() {
if ($this->globalfacts==null) {
$this->globalfacts = $this->indi->getGlobalFacts();
foreach ($this->globalfacts as $key => $value) {
$fact = $value->getTag();
if ($fact=="SEX") {
$this->SEX_COUNT++;
$this->SEX_LINENUM = $value->getLineNumber();
}
if ($fact=="NAME") {
$this->total_names++;
$this->NAME_LINENUM = $value->getLineNumber();
}
}
}
return $this->globalfacts;
}
/**
* get the individual facts shown on tab 1
* @return array
*/
function getIndiFacts() {
$indifacts = $this->indi->getIndiFacts();
sort_facts($indifacts);
return $indifacts;
}
/**
* get the other facts shown on tab 2
* @return array
*/
function getOtherFacts() {
$otherfacts = $this->indi->getOtherFacts();
return $otherfacts;
}
/**
* get the person box stylesheet class
* for the given person
* @param Person $person
* @return string returns 'person_box', 'person_boxF', or 'person_boxNN'
*/
function getPersonStyle(&$person) {
$sex = $person->getSex();
switch($sex) {
case "M":
$isf = "";
break;
case "F":
$isf = "F";
break;
default:
$isf = "NN";
break;
}
return "person_box".$isf;
}
/**
* build an array of Person that will be used to build a list
* of family members on the close relatives tab
* @param Family $family the family we are building for
* @return array an array of Person that will be used to iterate through on the indivudal.php page
*/
function buildFamilyList(&$family, $type) {
global $PEDI_CODES, $PEDI_CODES_F, $PEDI_CODES_M, $WT_IMAGES;
$people = array();
if (!is_object($family)) return $people;
$labels = array();
if ($type=="parents") {
$labels["parent"] = i18n::translate('Parent');
$labels["mother"] = i18n::translate('Mother');
$labels["father"] = i18n::translate('Father');
$labels["sibling"] = i18n::translate('Sibling');
$labels["sister"] = i18n::translate('Sister');
$labels["brother"] = i18n::translate('Brother');
}
if ($type=="step") {
$labels["parent"] = i18n::translate('Step-Parent');
$labels["mother"] = i18n::translate('Step-Mother');
$labels["father"] = i18n::translate('Step-Father');
$labels["sibling"] = i18n::translate('Half-Sibling');
$labels["sister"] = i18n::translate('Half-Sister');
$labels["brother"] = i18n::translate('Half-Brother');
}
if ($type=="spouse") {
if ($family->isNotMarried()) {
$labels["parent"] = i18n::translate('Partner');
$labels["mother"] = i18n::translate('Partner');
$labels["father"] = i18n::translate('Partner');
} elseif ($family->isDivorced()) {
$labels["parent"] = i18n::translate('Ex-Spouse');
$labels["mother"] = i18n::translate('Ex-Wife');
$labels["father"] = i18n::translate('Ex-Husband');
} else {
$marr_rec = $family->getMarriageRecord();
if (!empty($marr_rec)) {
$type = $family->getMarriageType();
if (empty($type) || stristr($type, "partner")===false) {
$labels["parent"] = i18n::translate('Spouse');
$labels["mother"] = i18n::translate('Wife');
$labels["father"] = i18n::translate('Husband');
} else {
$labels["parent"] = i18n::translate('Partner');
$labels["mother"] = i18n::translate('Partner');
$labels["father"] = i18n::translate('Partner');
}
} else {
$labels["parent"] = i18n::translate('Spouse');
$labels["mother"] = i18n::translate('Wife');
$labels["father"] = i18n::translate('Husband');
}
}
$labels["sibling"] = i18n::translate('Child');
$labels["sister"] = i18n::translate('Daughter');
$labels["brother"] = i18n::translate('Son');
}
$newhusb = null;
$newwife = null;
$newchildren = array();
$delchildren = array();
$children = array();
$husb = null;
$wife = null;
if (!$family->getChanged()) {
$husb = $family->getHusband();
$wife = $family->getWife();
$children = $family->getChildren();
}
//-- step families : set the label for the common parent
if ($type=="step") {
$fams = $this->indi->getChildFamilies();
foreach ($fams as $key=>$fam) {
if ($fam->hasParent($husb)) $labels["father"] = i18n::translate('Father');
if ($fam->hasParent($wife)) $labels["mother"] = i18n::translate('Mother');
}
}
//-- set the label for the husband
if (!is_null($husb)) {
$label = $labels["parent"];
$sex = $husb->getSex();
if ($sex=="F") {
$label = $labels["mother"];
}
if ($sex=="M") {
$label = $labels["father"];
}
if ($husb->getXref()==$this->pid) $label = "
";
$husb->setLabel($label);
}
//-- set the label for the wife
if (!is_null($wife)) {
$label = $labels["parent"];
$sex = $wife->getSex();
if ($sex=="F") {
$label = $labels["mother"];
}
if ($sex=="M") {
$label = $labels["father"];
}
if ($wife->getXref()==$this->pid) $label = "
";
$wife->setLabel($label);
}
if ($this->show_changes) {
$newfamily = $family->getUpdatedFamily();
if (!is_null($newfamily)) {
$newhusb = $newfamily->getHusband();
//-- check if the husband in the family has changed
if (!is_null($newhusb) && !$newhusb->equals($husb)) {
$label = $labels["parent"];
$sex = $newhusb->getSex();
if ($sex=="F") {
$label = $labels["mother"];
}
if ($sex=="M") {
$label = $labels["father"];
}
if ($newhusb->getXref()==$this->pid) $label = "
";
$newhusb->setLabel($label);
}
else $newhusb = null;
$newwife = $newfamily->getWife();
//-- check if the wife in the family has changed
if (!is_null($newwife) && !$newwife->equals($wife)) {
$label = $labels["parent"];
$sex = $newwife->getSex();
if ($sex=="F") {
$label = $labels["mother"];
}
if ($sex=="M") {
$label = $labels["father"];
}
if ($newwife->getXref()==$this->pid) $label = "
";
$newwife->setLabel($label);
}
else $newwife = null;
//-- check for any new children
$merged_children = array();
$new_children = $newfamily->getChildren();
$num = count($children);
for ($i=0; $i<$num; $i++) {
$child = $children[$i];
if (!is_null($child)) {
$found = false;
foreach ($new_children as $key=>$newchild) {
if (!is_null($newchild)) {
if ($child->equals($newchild)) {
$found = true;
break;
}
}
}
if (!$found) $delchildren[] = $child;
else $merged_children[] = $child;
}
}
foreach ($new_children as $key=>$newchild) {
if (!is_null($newchild)) {
$found = false;
foreach ($children as $key1=>$child) {
if (!is_null($child)) {
if ($child->equals($newchild)) {
$found = true;
break;
}
}
}
if (!$found) $newchildren[] = $newchild;
}
}
$children = $merged_children;
}
}
//-- set the labels for the children
$num = count($children);
for ($i=0; $i<$num; $i++) {
if (!is_null($children[$i])) {
$label = $labels["sibling"];
$sex = $children[$i]->getSex();
if ($sex=="F") {
$label = $labels["sister"];
}
if ($sex=="M") {
$label = $labels["brother"];
}
if ($children[$i]->getXref()==$this->pid) {
$label = "
";
}
$famcrec = get_sub_record(1, "1 FAMC @".$family->getXref()."@", $children[$i]->getGedcomRecord());
$pedi = get_gedcom_value("PEDI", 2, $famcrec, '', false);
if ($pedi) {
if ($sex=="F" && isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES_F[$pedi].")";
else if ($sex=="M" && isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES_M[$pedi].")";
else if (isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES[$pedi].")";
}
$children[$i]->setLabel($label);
}
}
$num = count($newchildren);
for ($i=0; $i<$num; $i++) {
$label = $labels["sibling"];
$sex = $newchildren[$i]->getSex();
if ($sex=="F") {
$label = $labels["sister"];
}
if ($sex=="M") {
$label = $labels["brother"];
}
if ($newchildren[$i]->getXref()==$this->pid) $label = "
";
$pedi = $newchildren[$i]->getChildFamilyPedigree($family->getXref());
if ($sex=="F" && isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES_F[$pedi].")";
else if ($sex=="M" && isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES_M[$pedi].")";
else if (isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES[$pedi].")";
$newchildren[$i]->setLabel($label);
}
$num = count($delchildren);
for ($i=0; $i<$num; $i++) {
$label = $labels["sibling"];
$sex = $delchildren[$i]->getSex();
if ($sex=="F") {
$label = $labels["sister"];
}
if ($sex=="M") {
$label = $labels["brother"];
}
if ($delchildren[$i]->getXref()==$this->pid) $label = "
";
$pedi = $delchildren[$i]->getChildFamilyPedigree($family->getXref());
if ($sex=="F" && isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES_F[$pedi].")";
else if ($sex=="M" && isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES_M[$pedi].")";
else if (isset($PEDI_CODES[$pedi])) $label .= "
(".$PEDI_CODES[$pedi].")";
$delchildren[$i]->setLabel($label);
}
if (!is_null($newhusb)) $people['newhusb'] = $newhusb;
if (!is_null($husb)) $people['husb'] = $husb;
if (!is_null($newwife)) $people['newwife'] = $newwife;
if (!is_null($wife)) $people['wife'] = $wife;
$people['children'] = $children;
$people['newchildren'] = $newchildren;
$people['delchildren'] = $delchildren;
return $people;
}
// -----------------------------------------------------------------------------
// Functions for GedFact Assistant
// -----------------------------------------------------------------------------
/**
* include GedFact controller
*/
function census_assistant() {
require WT_ROOT.'modules/GEDFact_assistant/_CENS/census_1_ctrl.php';
}
function medialink_assistant() {
require WT_ROOT.'modules/GEDFact_assistant/_MEDIA/media_1_ctrl.php';
}
// -----------------------------------------------------------------------------
// End GedFact Assistant Functions
// -----------------------------------------------------------------------------
}