requireMemberLogin() ->addExternalJavascript(WT_STATIC_URL.'js/autocomplete.js'); // TODO work out whether to use GET/POST for these // TODO decide what (if any) validation is required on these parameters $action =safe_REQUEST($_REQUEST, 'action', WT_REGEX_UNSAFE); $linenum=safe_REQUEST($_REQUEST, 'linenum', WT_REGEX_UNSAFE); $pid =safe_REQUEST($_REQUEST, 'pid', WT_REGEX_XREF); $famid =safe_REQUEST($_REQUEST, 'famid', WT_REGEX_XREF); $text =safe_REQUEST($_REQUEST, 'text', WT_REGEX_UNSAFE); $tag =safe_REQUEST($_REQUEST, 'tag', WT_REGEX_UNSAFE); $famtag =safe_REQUEST($_REQUEST, 'famtag', WT_REGEX_UNSAFE); $glevels=safe_REQUEST($_REQUEST, 'glevels', WT_REGEX_UNSAFE); $islink =safe_REQUEST($_REQUEST, 'islink', WT_REGEX_UNSAFE); $type =safe_REQUEST($_REQUEST, 'type', WT_REGEX_UNSAFE); $fact =safe_REQUEST($_REQUEST, 'fact', WT_REGEX_UNSAFE); $option =safe_REQUEST($_REQUEST, 'option', WT_REGEX_UNSAFE); $assist =safe_REQUEST($_REQUEST, 'assist', WT_REGEX_UNSAFE); $noteid =safe_REQUEST($_REQUEST, 'noteid', WT_REGEX_UNSAFE); $pid_array =safe_REQUEST($_REQUEST, 'pid_array', WT_REGEX_XREF); $pids_array_add =safe_REQUEST($_REQUEST, 'pids_array_add', WT_REGEX_XREF); $pids_array_edit=safe_REQUEST($_REQUEST, 'pids_array_edit', WT_REGEX_XREF); $update_CHAN=!safe_POST_bool('preserve_last_changed'); $uploaded_files = array(); $controller->addInlineJavascript(' var locale_date_format="' . preg_replace('/[^DMY]/', '', str_replace(array('J', 'F'), array('D', 'M'), strtoupper($DATE_FORMAT))). '"; '); $controller->addInlineJavascript(' function openerpasteid(id) { if (window.opener.paste_id) { window.opener.paste_id(id); } window.close(); } '); $controller->addInlineJavascript(' function paste_id(value) { pastefield.value = value; } '); $controller->addInlineJavascript(' function paste_char(value) { if (document.selection) { // IE pastefield.focus(); sel = document.selection.createRange(); sel.text = value; } else if (pastefield.selectionStart || pastefield.selectionStart == 0) { // Mozilla/Chrome/Safari pastefield.value = pastefield.value.substring(0, pastefield.selectionStart) + value + pastefield.value.substring(pastefield.selectionEnd, pastefield.value.length); pastefield.selectionStart = pastefield.selectionEnd = pastefield.selectionStart + value.length; } else { // Fallback? - just append pastefield.value += value; } if (pastefield.id=="NPFX" || pastefield.id=="GIVN" || pastefield.id=="SPFX" || pastefield.id=="SURN" || pastefield.id=="NSFX") { updatewholename(); } } '); //-- check if user has access to the gedcom record $edit = false; if (!empty($pid)) { if (($pid!="newsour") && ($pid!="newrepo") && ($noteid!="newnote")) { $gedrec = find_gedcom_record($pid, WT_GED_ID, true); $ct = preg_match("/^0 @$pid@ (.*)/i", $gedrec, $match); if ($ct>0) { $type = trim($match[1]); $tmp = WT_GedcomRecord::getInstance($pid); $edit = $tmp->canDisplayDetails() && $tmp->canEdit(); } // Don't allow edits if the record has changed since the edit-link was created checkChangeTime($pid, $gedrec, safe_GET('accesstime', WT_REGEX_INTEGER)); } else { $edit = true; } } elseif (!empty($famid)) { if ($famid != "new") { $gedrec = find_gedcom_record($famid, WT_GED_ID, true); $ct = preg_match("/^0 @$famid@ (.*)/i", $gedrec, $match); if ($ct>0) { $type = trim($match[1]); $tmp = WT_GedcomRecord::getInstance($famid); $edit = $tmp->canDisplayDetails() && $tmp->canEdit(); } // Don't allow edits if the record has changed since the edit-link was created checkChangeTime($famid, $gedrec, safe_GET('accesstime', WT_REGEX_INTEGER)); } } else { $edit = true; } if (!WT_USER_CAN_EDIT || !$edit) { $controller ->pageHeader() ->addInlineJavascript('closePopupAndReloadParent();'); exit; } $level0type = $type; switch ($action) { //////////////////////////////////////////////////////////////////////////////// case 'delete': $controller ->setPageTitle(WT_I18N::translate('Delete')) ->pageHeader(); // Retrieve the private data $record = new WT_GedcomRecord($gedrec); list($gedcom, $private_gedrec)=$record->privatizeGedcom(WT_USER_ACCESS_LEVEL); // When deleting a media link, $linenum comes is an OBJE and the $mediaid to delete should be set if ($linenum=='OBJE') { $newged = remove_media_subrecord($gedrec, $_REQUEST['mediaid']); } else { $newged = remove_subline($gedrec, $linenum); } $success = replace_gedrec($pid, WT_GED_ID, $newged.$private_gedrec, $update_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'editraw': $pid = safe_GET('pid', WT_REGEX_XREF); // print_indi_form() uses this $record = WT_GedcomRecord::getInstance($pid); // Hide the private data list($gedrec)=$record->privatizeGedcom(WT_USER_ACCESS_LEVEL); // Remove the first line of the gedrec - things go wrong when users change either the TYPE or XREF // Notes are special - they may contain data on the first line $gedrec=preg_replace('/^(0 @'.WT_REGEX_XREF.'@ NOTE) (.+)/', "$1\n1 CONC $2", $gedrec); list($gedrec1, $gedrec2)=explode("\n", $gedrec, 2); $controller ->setPageTitle($record->getFullName() . ' - ' . WT_I18N::translate('Edit raw GEDCOM record')) ->pageHeader(); ?>

getPageTitle(); ?>



setPageTitle($record->getFullName() . ' - ' . WT_I18N::translate('Edit')) ->pageHeader(); // Hide the private data list($gedrec)=$record->privatizeGedcom(WT_USER_ACCESS_LEVEL); echo '
'; echo '

', $controller->getPageTitle(), '

'; init_calendar_popup(); echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; $level1type = create_edit_form($gedrec, $linenum, $level0type); if (WT_USER_IS_ADMIN) { echo ''; } echo '
'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $record->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $record->LastChangeUser()); echo '
'; switch ($level0type) { case 'OBJE': case 'NOTE': // OBJE and NOTE "facts" are all special, and none can take lower-level links break; case 'SOUR': case 'REPO': // SOUR and REPO "facts" may only take a NOTE if ($level1type!='NOTE') { print_add_layer('NOTE'); } break; case 'FAM': case 'INDI': // FAM and INDI records have "real facts". They can take NOTE/SOUR/OBJE/etc. if ($level1type!='SEX') { if ($level1type!='SOUR' && $level1type!='REPO') { print_add_layer('SOUR'); } if ($level1type!='OBJE' && $level1type!='REPO') { print_add_layer('OBJE'); } if ($level1type!='NOTE') { print_add_layer('NOTE'); } // Shared Note addition ------------ if ($level1type!='SHARED_NOTE' && $level1type!='NOTE') { print_add_layer('SHARED_NOTE'); } if ($level1type!='ASSO' && $level1type!='REPO' && $level1type!='NOTE') { print_add_layer('ASSO'); } // allow to add godfather and godmother for CHR fact or best man and bridesmaid for MARR fact in one window if ($level1type=='CHR' || $level1type=='MARR') { print_add_layer('ASSO2'); } // RESN can be added to all level 1 tags print_add_layer('RESN'); } break; } ?>

setPageTitle($record->getFullName() . ' - ' . WT_Gedcom_Tag::getLabel($fact, $record)) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; init_calendar_popup(); echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; create_add_form($fact); if (WT_USER_IS_ADMIN) { echo ''; } echo '
'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $record->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $record->LastChangeUser()); echo '
'; // Genealogical facts (e.g. for INDI and FAM records) can have 2 SOUR/NOTE/OBJE/ASSO/RESN ... if ($level0type=='INDI' || $level0type=='FAM') { // ... but not facts which are simply links to other records if ($fact!='OBJE' && $fact!='SHARED_NOTE' && $fact!='OBJE' && $fact!='REPO' && $fact!='SOUR' && $fact!='ASSO') { print_add_layer('SOUR'); print_add_layer('OBJE'); // Don't add notes to notes! if ($fact!='NOTE') { print_add_layer('NOTE'); print_add_layer('SHARED_NOTE'); } print_add_layer('ASSO'); // allow to add godfather and godmother for CHR fact or best man and bridesmaid for MARR fact in one window if ($fact=='CHR' || $fact=='MARR') { print_add_layer('ASSO2'); } print_add_layer('RESN'); } } ?>

setPageTitle($family->getFullName() . ' - ' . WT_I18N::translate('Add a new child')); } else { $controller->setPageTitle(WT_I18N::translate('Add an unlinked person')); } $controller->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; print_indi_form('addchildaction', $famid, '', '', 'CHIL', $gender); echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'addspouse': $famtag = safe_GET('famtag', '(HUSB|WIFE)'); $famid = safe_GET('famid', WT_REGEX_XREF); if ($famtag=='WIFE') { $controller->setPageTitle(WT_I18N::translate('Add a new wife')); } else { $controller->setPageTitle(WT_I18N::translate('Add a new husband')); } $controller->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; print_indi_form('addspouseaction', $famid, '', '', $famtag); echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'addnewparent': $famtag = safe_GET('famtag', '(HUSB|WIFE)'); $famid = safe_GET('famid', WT_REGEX_XREF); $pid = safe_GET('pid', WT_REGEX_XREF); // print_indi_form() uses this $person = WT_Person::getInstance($pid); if ($person) { // Adding a parent to an individual $name=$person->getFullName() . ' - '; } else { // Adding a spouse to a family $name=''; } if ($famtag=='WIFE') { $controller->setPageTitle($name . WT_I18N::translate('Add a new mother')); } else { $controller->setPageTitle($name . WT_I18N::translate('Add a new father')); } $controller->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; print_indi_form('addnewparentaction', $famid, '', '', $famtag); echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'addopfchild': $pid = safe_GET('pid', WT_REGEX_XREF); $famid = safe_GET('famid', WT_REGEX_XREF); $person = WT_Person::getInstance($pid); $controller ->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Add a child to create a one-parent family')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; print_indi_form('addopfchildaction', $famid, '', '', 'CHIL'); echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'addfamlink': $person=WT_Person::getInstance($pid); if ($famtag=='CHIL') { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Link this person to an existing family as a child')); } elseif ($person->getSex()=='F') { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Link this person to an existing family as a wife')); } else { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Link this person to an existing family as a husband')); } $controller->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; if ($famtag=='CHIL') { echo ''; } if (WT_USER_IS_ADMIN) { echo ''; } echo '
', WT_I18N::translate('Family'), ' '; echo print_findfamily_link('famid'); echo '
', WT_Gedcom_Tag::getLabel('PEDI'), ''; switch ($person->getSex()) { case 'M': echo edit_field_pedi_m('PEDI'); break; case 'F': echo edit_field_pedi_f('PEDI'); break; case 'U': echo edit_field_pedi_u('PEDI'); break; } echo help_link('PEDI'); echo '
'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $person->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $person->LastChangeUser()); echo '
'; ?>

getSex()=='F') { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Add a husband using an existing person')); } else { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Add a wife using an existing person')); } $controller->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; init_calendar_popup(); echo '
'; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; add_simple_tag("0 MARR Y"); add_simple_tag("0 DATE", "MARR"); add_simple_tag("0 PLAC", "MARR"); if (WT_USER_IS_ADMIN) { echo "'; } echo '
'; if ($famtag=="WIFE") { echo WT_I18N::translate('Wife'); } else { echo WT_I18N::translate('Husband'); } echo ' '; echo print_findindi_link('spouseid'); echo '
"; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $person->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $person->LastChangeUser()); echo '
'; print_add_layer("SOUR"); print_add_layer("OBJE"); print_add_layer("NOTE"); print_add_layer("SHARED_NOTE"); print_add_layer("ASSO"); // allow to add godfather and godmother for CHR fact or best man and bridesmaid for MARR fact in one window print_add_layer("ASSO2"); print_add_layer("RESN"); ?>

setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Link this person to an existing family as a child')); } elseif ($person->getSex()=='F') { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Link this person to an existing family as a wife')); } else { $controller->setPageTitle($person->getFullName() . ' - ' . WT_I18N::translate('Link this person to an existing family as a husband')); } $controller->pageHeader(); // Make sure we have the right ID (f123 vs. F123) $famid=WT_Family::getInstance($famid)->getXref(); $famrec = find_gedcom_record($famid, WT_GED_ID, true); $success=false; if (!empty($famrec)) { $itag = "FAMC"; if ($famtag=="HUSB" || $famtag=="WIFE") $itag="FAMS"; //-- update the individual record for the person if (strpos($gedrec, "1 $itag @$famid@")===false) { switch ($itag) { case 'FAMC': if (isset($_REQUEST['PEDI'])) { $PEDI = $_REQUEST['PEDI']; } else { $PEDI=''; } $gedrec.="\n".WT_Gedcom_Code_Pedi::createNewFamcPedi($PEDI, $famid); break; case 'FAMS': $gedrec.="\n1 FAMS @$famid@"; break; } $success=replace_gedrec($pid, WT_GED_ID, $gedrec, $update_CHAN); } //-- if it is adding a new child to a family if ($famtag=="CHIL") { if (strpos($famrec, "1 $famtag @$pid@")===false) { $famrec .= "\n1 $famtag @$pid@"; $success=replace_gedrec($famid, WT_GED_ID, $famrec, $update_CHAN); } } else { //-- if it is adding a husband or wife //-- check if the family already has a HUSB or WIFE $ct = preg_match("/1 $famtag @(.*)@/", $famrec, $match); if ($ct>0) { //-- get the old ID $spid = trim($match[1]); //-- only continue if the old husb/wife is not the same as the current one if ($spid!=$pid) { //-- change a of the old ids to the new id $famrec = str_replace("\n1 $famtag @$spid@", "\n1 $famtag @$pid@", $famrec); $success=replace_gedrec($famid, WT_GED_ID, $famrec, $update_CHAN); //-- remove the FAMS reference from the old husb/wife if (!empty($spid)) { $srec = find_gedcom_record($spid, WT_GED_ID, true); if ($srec) { $srec = str_replace("\n1 $itag @$famid@", "", $srec); $success=replace_gedrec($spid, WT_GED_ID, $srec, $update_CHAN); } } } } else { $famrec .= "\n1 $famtag @$pid@"; $success=replace_gedrec($famid, WT_GED_ID, $famrec, $update_CHAN); } } } else { echo "Family record not found"; } if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'addnewsource': $controller ->setPageTitle(WT_I18N::translate('Create a new source')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; echo ''; ?>
'; } ?>

'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo '

setPageTitle(WT_I18N::translate('Create a new source')) ->pageHeader(); $newgedrec = "0 @XREF@ SOUR"; if (isset($_REQUEST['EVEN'])) $EVEN = $_REQUEST['EVEN']; if (!empty($EVEN) && count($EVEN)>0) { $newgedrec .= "\n1 DATA"; $newgedrec .= "\n2 EVEN ".implode(",", $EVEN); if (!empty($EVEN_DATE)) $newgedrec .= "\n3 DATE ".$EVEN_DATE; if (!empty($EVEN_PLAC)) $newgedrec .= "\n3 PLAC ".$EVEN_PLAC; if (!empty($AGNC)) $newgedrec .= "\n2 AGNC ".$AGNC; } if (isset($_REQUEST['ABBR'])) $ABBR = $_REQUEST['ABBR']; if (isset($_REQUEST['TITL'])) $TITL = $_REQUEST['TITL']; if (isset($_REQUEST['_HEB'])) $_HEB = $_REQUEST['_HEB']; if (isset($_REQUEST['ROMN'])) $ROMN = $_REQUEST['ROMN']; if (isset($_REQUEST['AUTH'])) $AUTH = $_REQUEST['AUTH']; if (isset($_REQUEST['PUBL'])) $PUBL = $_REQUEST['PUBL']; if (isset($_REQUEST['REPO'])) $REPO = $_REQUEST['REPO']; if (isset($_REQUEST['CALN'])) $CALN = $_REQUEST['CALN']; if (!empty($ABBR)) $newgedrec .= "\n1 ABBR $ABBR"; if (!empty($TITL)) { $newgedrec .= "\n1 TITL $TITL"; if (!empty($_HEB)) $newgedrec .= "\n2 _HEB $_HEB"; if (!empty($ROMN)) $newgedrec .= "\n2 ROMN $ROMN"; } if (!empty($AUTH)) $newgedrec .= "\n1 AUTH $AUTH"; if (!empty($PUBL)) { foreach (preg_split("/\r?\n/", $PUBL) as $k=>$line) { if ($k==0) { $newgedrec .= "\n1 PUBL $line"; } else { $newgedrec .= "\n2 CONT $line"; } } } if (!empty($REPO)) { $newgedrec .= "\n1 REPO @$REPO@"; if (!empty($CALN)) $newgedrec .= "\n2 CALN $CALN"; } $xref = append_gedrec($newgedrec, WT_GED_ID); if ($xref) { $controller->addInlineJavascript('openerpasteid("' . $xref . '");'); } break; //////////////////////////////////////////////////////////////////////////////// case 'addnewnote': $controller ->setPageTitle(WT_I18N::translate('Create a new Shared Note')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; ?>
'; echo ''; echo ''; echo WT_I18N::translate('Shared note'), help_link('SHARED_NOTE'); echo ''; echo ''; echo print_specialchar_link('NOTE'); echo ''; echo ''; if (WT_USER_IS_ADMIN) { echo ''; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo ""; } ?>

setPageTitle(WT_I18N::translate('Create a new Shared Note')) ->pageHeader(); $newgedrec = "0 @XREF@ NOTE"; if (isset($_REQUEST['NOTE'])) $NOTE = $_REQUEST['NOTE']; if (!empty($NOTE)) { foreach (preg_split("/\r?\n/", $NOTE) as $k=>$line) { if ($k==0) { $newgedrec .= " {$line}"; } else { $newgedrec .= "\n1 CONT {$line}"; } } } $xref = append_gedrec($newgedrec, WT_GED_ID); if ($xref) { $controller->addInlineJavascript('openerpasteid("' . $xref . '");'); } break; //////////////////////////////////////////////////////////////////////////////// case 'addnewnote_assisted': $controller ->setPageTitle(WT_I18N::translate('Create a new Shared Note using Assistant')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '  '; // When more languages are added to the wiki, we can expand or redesign this switch (WT_LOCALE) { case 'fr': echo wiki_help_link('/fr/Module_Assistant_Recensement'); break; case 'en': default: echo wiki_help_link('/en/Census_Assistant_module'); break; } echo '

'; if (isset($_REQUEST['pid'])) $pid = $_REQUEST['pid']; global $pid; ?>
>
setPageTitle(WT_I18N::translate('Create a new Shared Note using Assistant')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; require WT_ROOT.WT_MODULES_DIR.'GEDFact_assistant/_CENS/addnoteaction_assisted.php'; echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'addmedia_links': $controller ->setPageTitle(WT_I18N::translate('Family navigator')) ->pageHeader(); ?>

getPageTitle(); ?>

privatizeGedcom(WT_USER_ACCESS_LEVEL); $controller ->setPageTitle($source->getFullName()) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; init_calendar_popup(); echo '
'; echo ''; echo ''; echo ''; $gedlines = explode("\n", $gedrec); // -- find the number of lines in the record $uniquefacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'SOUR_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY); $usedfacts = array(); $lines = count($gedlines); if ($lines==1) { foreach ($uniquefacts as $fact) { $gedrec.="\n1 ".$fact; } $gedlines = explode("\n", $gedrec); } for ($i=$linenum; $i<$lines; $i++) { $fields = explode(' ', $gedlines[$i]); if ((substr($gedlines[$i], 0, 1)<2) && $fields[1]!="CHAN") { $level1type = create_edit_form($gedrec, $i, $level0type); echo ''; $usedfacts[]=$fields[1]; foreach ($uniquefacts as $key=>$fact) { if ($fact==$fields[1]) unset($uniquefacts[$key]); } } } foreach ($uniquefacts as $key=>$fact) { $gedrec.="\n1 ".$fact; $level1type = create_edit_form($gedrec, $lines++, $level0type); echo ''; } if (WT_USER_IS_ADMIN) { echo ''; } echo '
'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $source->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $source->LastChangeUser()); echo '
'; print_add_layer("OBJE"); print_add_layer("NOTE"); print_add_layer("SHARED_NOTE"); print_add_layer("RESN"); ?>

setPageTitle(WT_I18N::translate('Edit Shared Note')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; // Hide the private data list($gedrec)=$note->privatizeGedcom(WT_USER_ACCESS_LEVEL); ?>
$line) { $num_note_lines++; } } else { $note_content=''; } ?> '; } ?>

'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $note->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $note->LastChangeUser()); echo '

setPageTitle(WT_I18N::translate('Create Repository')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; echo ''; ?>
'; } ?>
'; echo WT_Gedcom_Tag::getLabel('CHAN'), ''; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo '

setPageTitle(WT_I18N::translate('Create Repository')) ->pageHeader(); $newgedrec = "0 @XREF@ REPO"; if (isset($_REQUEST['REPO_NAME'])) $NAME = $_REQUEST['REPO_NAME']; if (isset($_REQUEST['_HEB'])) $_HEB = $_REQUEST['_HEB']; if (isset($_REQUEST['ROMN'])) $ROMN = $_REQUEST['ROMN']; if (isset($_REQUEST['ADDR'])) $ADDR = $_REQUEST['ADDR']; if (isset($_REQUEST['PHON'])) $PHON = $_REQUEST['PHON']; if (isset($_REQUEST['FAX'])) $FAX = $_REQUEST['FAX']; if (isset($_REQUEST['EMAIL'])) $EMAIL = $_REQUEST['EMAIL']; if (isset($_REQUEST['WWW'])) $WWW = $_REQUEST['WWW']; if (!empty($NAME)) { $newgedrec .= "\n1 NAME $NAME"; if (!empty($_HEB)) $newgedrec .= "\n2 _HEB $_HEB"; if (!empty($ROMN)) $newgedrec .= "\n2 ROMN $ROMN"; } if (!empty($ADDR)) { foreach (preg_split("/\r?\n/", $ADDR) as $k=>$line) { if ($k==0) { $newgedrec .= "\n1 ADDR {$line}"; } else { $newgedrec .= "\n2 CONT {$line}"; } } } if (!empty($PHON)) $newgedrec .= "\n1 PHON $PHON"; if (!empty($FAX)) $newgedrec .= "\n1 FAX $FAX"; if (!empty($EMAIL)) $newgedrec .= "\n1 EMAIL $EMAIL"; if (!empty($WWW)) $newgedrec .= "\n1 WWW $WWW"; $xref = append_gedrec($newgedrec, WT_GED_ID); if ($xref) { $controller->addInlineJavascript('openerpasteid("' . $xref . '");'); } break; //////////////////////////////////////////////////////////////////////////////// case 'updateraw': $controller ->setPageTitle(WT_I18N::translate('Edit raw GEDCOM record')) ->pageHeader(); $pid = safe_POST('pid', WT_REGEX_XREF); $record = WT_GedcomRecord::getInstance($pid); // Retrieve the private data list(, $private_gedrec)=$record->privatizeGedcom(WT_USER_ACCESS_LEVEL); $newgedrec = $_POST['newgedrec1'] . "\n" . $_POST['newgedrec2'] . $private_gedrec; $success = replace_gedrec($pid, WT_GED_ID, $newgedrec, !safe_POST_bool('preserve_last_changed')); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'update': $controller ->setPageTitle(WT_I18N::translate('Edit')) ->pageHeader(); /* ----------------------------------------------------------------------------- * $pids_array is a text file passed via js from the CENS GEDFact Assistant * to the hidden field id=\"pids_array\" in the case 'add'. * The subsequent array ($cens_pids), after exploding this text file, * is an array of indi id's within the Census Transcription * If $cens_pids is set, then this allows the array to "copy" the new CENS event * using the foreach loop to these id's * If $cens_pids is not set, then the array created is just the current $pid. * ----------------------------------------------------------------------------- */ if (isset($_REQUEST['pids_array_add'])) $pids_array = $_REQUEST['pids_array_add']; if (isset($_REQUEST['pids_array_edit'])) $pids_array = $_REQUEST['pids_array_edit']; if (isset($_REQUEST['num_note_lines'])) $num_note_lines = $_REQUEST['num_note_lines']; if (isset($pids_array) && $pids_array!="no_array") { $cens_pids=explode(', ', $pids_array); } if (!isset($cens_pids)) { $cens_pids = array($pid); $idnums=""; } else { $cens_pids = $cens_pids; $idnums="multi"; } // Cycle through each individual concerned defined by $cens_pids array. $success = true; foreach ($cens_pids as $pid) { if (isset($pid)) { $gedrec = find_gedcom_record($pid, WT_GED_ID, true); } elseif (isset($famid)) { $gedrec = find_gedcom_record($famid, WT_GED_ID, true); } // Retrieve the private data $tmp=new WT_GedcomRecord($gedrec); list($gedrec, $private_gedrec)=$tmp->privatizeGedcom(WT_USER_ACCESS_LEVEL); // If the fact has a DATE or PLAC, then delete any value of Y if ($text[0]=='Y') { for ($n=1; $n0) { if (isset($_REQUEST['folder'])) $folder = $_REQUEST['folder']; $uploaded_files = array(); if (substr($folder, 0, 1) == "/") $folder = substr($folder, 1); if (substr($folder, -1, 1) != "/") $folder .= "/"; foreach ($_FILES as $upload) { if (!empty($upload['tmp_name'])) { if (!move_uploaded_file($upload['tmp_name'], $MEDIA_DIRECTORY.$folder.basename($upload['name']))) { $error .= "
".WT_I18N::translate('There was an error uploading your file.')."
".file_upload_error_text($upload['error']); $uploaded_files[] = ""; } else { $filename = $MEDIA_DIRECTORY.$folder.basename($upload['name']); $uploaded_files[] = $MEDIA_DIRECTORY.$folder.basename($upload['name']); if (!is_dir($MEDIA_DIRECTORY."thumbs/".$folder)) mkdir($MEDIA_DIRECTORY."thumbs/".$folder); $thumbnail = $MEDIA_DIRECTORY."thumbs/".$folder.basename($upload['name']); generate_thumbnail($filename, $thumbnail); if (!empty($error)) { echo "", $error, ""; } } } else { $uploaded_files[] = ""; } } } $gedlines = explode("\n", trim($gedrec)); //-- for new facts set linenum to number of lines if (!is_array($linenum)) { if ($linenum=="new" || $idnums=="multi") { $linenum = count($gedlines); } $newged = ""; for ($i=0; $i<$linenum; $i++) { $newged .= $gedlines[$i]."\n"; } //-- for edits get the level from the line if (isset($gedlines[$linenum])) { $fields = explode(' ', $gedlines[$linenum]); $glevel = $fields[0]; $i++; while (($i$glevel)) { $i++; } } if (!isset($glevels)) $glevels = array(); if (isset($_REQUEST['NAME'])) $NAME = $_REQUEST['NAME']; if (isset($_REQUEST['TYPE'])) $TYPE = $_REQUEST['TYPE']; if (isset($_REQUEST['NPFX'])) $NPFX = $_REQUEST['NPFX']; if (isset($_REQUEST['GIVN'])) $GIVN = $_REQUEST['GIVN']; if (isset($_REQUEST['NICK'])) $NICK = $_REQUEST['NICK']; if (isset($_REQUEST['SPFX'])) $SPFX = $_REQUEST['SPFX']; if (isset($_REQUEST['SURN'])) $SURN = $_REQUEST['SURN']; if (isset($_REQUEST['NSFX'])) $NSFX = $_REQUEST['NSFX']; if (isset($_REQUEST['ROMN'])) $ROMN = $_REQUEST['ROMN']; if (isset($_REQUEST['FONE'])) $FONE = $_REQUEST['FONE']; if (isset($_REQUEST['_HEB'])) $_HEB = $_REQUEST['_HEB']; if (isset($_REQUEST['_AKA'])) $_AKA = $_REQUEST['_AKA']; if (isset($_REQUEST['_MARNM'])) $_MARNM = $_REQUEST['_MARNM']; if (isset($_REQUEST['NOTE'])) $NOTE = $_REQUEST['NOTE']; if (!empty($NAME)) $newged .= "\n1 NAME $NAME"; if (!empty($TYPE)) $newged .= "\n2 TYPE $TYPE"; if (!empty($NPFX)) $newged .= "\n2 NPFX $NPFX"; if (!empty($GIVN)) $newged .= "\n2 GIVN $GIVN"; if (!empty($NICK)) $newged .= "\n2 NICK $NICK"; if (!empty($SPFX)) $newged .= "\n2 SPFX $SPFX"; if (!empty($SURN)) $newged .= "\n2 SURN $SURN"; if (!empty($NSFX)) $newged .= "\n2 NSFX $NSFX"; if (!empty($NOTE)) { $cmpfunc = create_function('$e', 'return strpos($e,"0 @N") !==0 && strpos($e,"1 CONT") !==0;'); $gedlines = array_filter($gedlines, $cmpfunc); $tempnote = preg_split('/\r?\n/', trim($NOTE) . "\n"); // make sure only one line ending on the end $title[] = "0 @$pid@ NOTE " . array_shift($tempnote); foreach($tempnote as &$line) { $line = trim("1 CONT " . $line,' '); } $gedlines = array_merge($title,$tempnote,$gedlines); } //-- Refer to Bug [ 1329644 ] Add Married Name - Wrong Sequence //-- _HEB/ROMN/FONE have to be before _AKA, even if _AKA exists in input and the others are now added if (!empty($ROMN)) $newged .= "\n2 ROMN $ROMN"; if (!empty($FONE)) $newged .= "\n2 FONE $FONE"; if (!empty($_HEB)) $newged .= "\n2 _HEB $_HEB"; $newged = handle_updates($newged); if (!empty($_AKA)) $newged .= "\n2 _AKA $_AKA"; if (!empty($_MARNM)) $newged .= "\n2 _MARNM $_MARNM"; while ($i$glevel)) $i++; } if (!isset($glevels)) $glevels = array(); if (isset($_REQUEST['NAME'])) $NAME = $_REQUEST['NAME']; if (isset($_REQUEST['TYPE'])) $TYPE = $_REQUEST['TYPE']; if (isset($_REQUEST['NPFX'])) $NPFX = $_REQUEST['NPFX']; if (isset($_REQUEST['GIVN'])) $GIVN = $_REQUEST['GIVN']; if (isset($_REQUEST['NICK'])) $NICK = $_REQUEST['NICK']; if (isset($_REQUEST['SPFX'])) $SPFX = $_REQUEST['SPFX']; if (isset($_REQUEST['SURN'])) $SURN = $_REQUEST['SURN']; if (isset($_REQUEST['NSFX'])) $NSFX = $_REQUEST['NSFX']; if (isset($_REQUEST['ROMN'])) $ROMN = $_REQUEST['ROMN']; if (isset($_REQUEST['FONE'])) $FONE = $_REQUEST['FONE']; if (isset($_REQUEST['_HEB'])) $_HEB = $_REQUEST['_HEB']; if (isset($_REQUEST['_AKA'])) $_AKA = $_REQUEST['_AKA']; if (isset($_REQUEST['_MARNM'])) $_MARNM = $_REQUEST['_MARNM']; if (isset($_REQUEST['NOTE'])) $NOTE = $_REQUEST['NOTE']; if (!empty($NAME)) $newged .= "\n1 NAME $NAME"; if (!empty($TYPE)) $newged .= "\n2 TYPE $TYPE"; if (!empty($NPFX)) $newged .= "\n2 NPFX $NPFX"; if (!empty($GIVN)) $newged .= "\n2 GIVN $GIVN"; if (!empty($NICK)) $newged .= "\n2 NICK $NICK"; if (!empty($SPFX)) $newged .= "\n2 SPFX $SPFX"; if (!empty($SURN)) $newged .= "\n2 SURN $SURN"; if (!empty($NSFX)) $newged .= "\n2 NSFX $NSFX"; if (!empty($NOTE)) { $cmpfunc = create_function('$e', 'return strpos($e,"0 @N") !==0 && strpos($e,"1 CONT") !==0;'); $gedlines = array_filter($gedlines, $cmpfunc); $tempnote = preg_split('/\r?\n/', trim($NOTE) . "\n"); // make sure only one line ending on the end $title[] = "0 @$pid@ NOTE " . array_shift($tempnote); foreach($tempnote as &$line) { $line = trim("1 CONT " . $line,' '); } $gedlines = array_merge($title,$tempnote,$gedlines); } //-- Refer to Bug [ 1329644 ] Add Married Name - Wrong Sequence //-- _HEB/ROMN/FONE have to be before _AKA, even if _AKA exists in input and the others are now added if (!empty($ROMN)) $newged .= "\n2 ROMN $ROMN"; if (!empty($FONE)) $newged .= "\n2 FONE $FONE"; if (!empty($_HEB)) $newged .= "\n2 _HEB $_HEB"; if (!empty($_AKA)) $newged .= "\n2 _AKA $_AKA"; if (!empty($_MARNM)) $newged .= "\n2 _MARNM $_MARNM"; $newged = handle_updates($newged); $current = $editline; break; } } $success = $success && replace_gedrec($pid, WT_GED_ID, $newged.$private_gedrec, $update_CHAN); } // end foreach $cens_pids ------------- if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'addchildaction': $controller ->setPageTitle(WT_I18N::translate('Add child')) ->pageHeader(); splitSOUR(); // separate SOUR record from the rest $gedrec ="0 @REF@ INDI"; $gedrec.=addNewName(); $gedrec.=addNewSex (); if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FACTS, $matches)) { foreach ($matches[1] as $match) { $gedrec.=addNewFact($match); } } if (!empty($famid)) { if (isset($_REQUEST['PEDI'])) { $PEDI = $_REQUEST['PEDI']; } else { $PEDI=''; } $gedrec.="\n".WT_Gedcom_Code_Pedi::createNewFamcPedi($PEDI, $famid); } if (safe_POST_bool('SOUR_INDI')) { $gedrec = handle_updates($gedrec); } else { $gedrec = updateRest($gedrec); } $xref = append_gedrec($gedrec, WT_GED_ID); $gedrec = ""; if ($xref) { if (empty($famid)) { $success=true; } else { // Insert new child at the right place [ 1686246 ] $newchild = WT_Person::getInstance($xref); $gedrec=find_gedcom_record($famid, WT_GED_ID, true); $family=new WT_Family($gedrec); $done = false; foreach ($family->getChildren() as $key=>$child) { if (WT_Date::Compare($newchild->getEstimatedBirthDate(), $child->getEstimatedBirthDate())<0) { // new child is older : insert before $gedrec = str_replace("1 CHIL @".$child->getXref()."@", "1 CHIL @$xref@\n1 CHIL @".$child->getXref()."@", $gedrec); $done = true; break; } } // new child is the only one if (count($family->getChildren())<1) { $gedrec .= "\n1 CHIL @$xref@"; } elseif (!$done) { // new child is the youngest or undated : insert after $gedrec = str_replace("\n1 CHIL @".$child->getXref()."@", "\n1 CHIL @".$child->getXref()."@\n1 CHIL @$xref@", $gedrec); } $success=replace_gedrec($famid, WT_GED_ID, $gedrec, $update_CHAN); } } else { $success=false; } if ($success && !WT_DEBUG) { if (safe_POST('goto')=='new') { $record = WT_Person::getInstance($xref); $controller->addInlineJavascript('closePopupAndReloadParent("' . $record->getRawUrl() . '");'); } else { $controller->addInlineJavascript('closePopupAndReloadParent();'); } } break; //////////////////////////////////////////////////////////////////////////////// case 'addspouseaction': $controller ->setPageTitle(WT_I18N::translate('Add a new spouse')) ->pageHeader(); splitSOUR(); // separate SOUR record from the rest $gedrec ="0 @REF@ INDI"; $gedrec.=addNewName(); $gedrec.=addNewSex (); if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FACTS, $matches)) { foreach ($matches[1] as $match) { $gedrec.=addNewFact($match); } } if (safe_POST_bool('SOUR_INDI')) { $gedrec = handle_updates($gedrec); } else { $gedrec = updateRest($gedrec); } $xref = append_gedrec($gedrec, WT_GED_ID); $success = true; if ($famid=="new") { $famrec = "0 @new@ FAM"; $SEX=safe_POST('SEX', '[MF]', 'U'); if ($SEX=="M") $famtag = "HUSB"; if ($SEX=="F") $famtag = "WIFE"; if ($famtag=="HUSB") { $famrec .= "\n1 HUSB @$xref@"; $famrec .= "\n1 WIFE @$pid@"; } else { $famrec .= "\n1 WIFE @$xref@"; $famrec .= "\n1 HUSB @$pid@"; } if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FAMFACTS, $matches)) { foreach ($matches[1] as $match) { $famrec.=addNewFact($match); } } if (safe_POST_bool('SOUR_FAM')) { $famrec = handle_updates($famrec); } else { $famrec = updateRest($famrec); } $famid = append_gedrec($famrec, WT_GED_ID); } elseif (!empty($famid)) { $famrec = find_gedcom_record($famid, WT_GED_ID, true); if (!empty($famrec)) { $famrec .= "\n1 $famtag @$xref@"; if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FAMFACTS, $matches)) { foreach ($matches[1] as $match) { $famrec.=addNewFact($match); } } if (safe_POST_bool('SOUR_FAM')) { $famrec = handle_updates($famrec); } else { $famrec = updateRest($famrec); } $success = $success && replace_gedrec($famid, WT_GED_ID, $famrec, $update_CHAN); } } if ((!empty($famid))&&($famid!="new")) { $gedrec = find_gedcom_record($xref, WT_GED_ID, true) . "\n1 FAMS @$famid@"; $success = $success && replace_gedrec($xref, WT_GED_ID, $gedrec, $update_CHAN); } if (!empty($pid)) { $indirec = find_gedcom_record($pid, WT_GED_ID, true); if ($indirec) { $indirec .= "\n1 FAMS @$famid@"; $success = $success && replace_gedrec($pid, WT_GED_ID, $indirec, $update_CHAN); } } if ($success && !WT_DEBUG) { if (safe_POST('goto')=='new') { $record = WT_Person::getInstance($xref); $controller->addInlineJavascript('closePopupAndReloadParent("' . $record->getRawUrl() . '");'); } else { $controller->addInlineJavascript('closePopupAndReloadParent();'); } } break; //////////////////////////////////////////////////////////////////////////////// case 'linkspouseaction': $controller ->setPageTitle(WT_I18N::translate('Add child')) ->pageHeader(); splitSOUR(); // separate SOUR record from the rest if (isset($_REQUEST['spid'])) $spid = $_REQUEST['spid']; $success=false; if (!empty($spid)) { $gedrec = find_gedcom_record($spid, WT_GED_ID, true); if ($gedrec) { if ($famid=="new") { $famrec = "0 @new@ FAM"; $SEX = get_gedcom_value("SEX", 1, $gedrec); if ($SEX=="M") $famtag = "HUSB"; if ($SEX=="F") $famtag = "WIFE"; if ($famtag=="HUSB") { $famrec .= "\n1 HUSB @$spid@"; $famrec .= "\n1 WIFE @$pid@"; } else { $famrec .= "\n1 WIFE @$spid@"; $famrec .= "\n1 HUSB @$pid@"; } $famrec.=addNewFact('MARR'); if (safe_POST_bool('SOUR_FAM') || count($tagSOUR)>0) { // before adding 2 SOUR it needs to add 1 MARR Y first if (addNewFact('MARR')=='') { $famrec .= "\n1 MARR Y"; } $famrec = handle_updates($famrec); } else { // before adding level 2 facts it needs to add 1 MARR Y first if (addNewFact('MARR')=='') { $famrec .= "\n1 MARR Y"; } $famrec = updateRest($famrec); } $famid = append_gedrec($famrec, WT_GED_ID); } if ((!empty($famid))&&($famid!="new")) { $gedrec .= "\n1 FAMS @$famid@"; $success=replace_gedrec($spid, WT_GED_ID, $gedrec, $update_CHAN); } if (!empty($pid)) { $indirec = find_gedcom_record($pid, WT_GED_ID, true); if (!empty($indirec)) { $indirec = trim($indirec) . "\n1 FAMS @$famid@"; $success=replace_gedrec($pid, WT_GED_ID, $indirec, $update_CHAN); } } } } if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'addnewparentaction': $controller ->setPageTitle(WT_I18N::translate('Add a new father')) ->pageHeader(); splitSOUR(); // separate SOUR record from the rest $gedrec ="0 @REF@ INDI"; $gedrec.=addNewName(); $gedrec.=addNewSex (); if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FACTS, $matches)) { foreach ($matches[1] as $match) { $gedrec.=addNewFact($match); } } if (safe_POST_bool('SOUR_INDI')) { $gedrec = handle_updates($gedrec); } else { $gedrec = updateRest($gedrec); } $xref = append_gedrec($gedrec, WT_GED_ID); $success = true; if ($famid=="new") { $famrec = "0 @new@ FAM"; if ($famtag=="HUSB") { $famrec .= "\n1 HUSB @$xref@"; $famrec .= "\n1 CHIL @$pid@"; } else { $famrec .= "\n1 WIFE @$xref@"; $famrec .= "\n1 CHIL @$pid@"; } if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FAMFACTS, $matches)) { foreach ($matches[1] as $match) { $famrec.=addNewFact($match); } } if (safe_POST_bool('SOUR_FAM')) { $famrec = handle_updates($famrec); } else { $famrec = updateRest($famrec); } $famid = append_gedrec($famrec, WT_GED_ID); } elseif (!empty($famid)) { $famrec = find_gedcom_record($famid, WT_GED_ID, true); if (!empty($famrec)) { $famrec .= "\n1 $famtag @$xref@"; if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FAMFACTS, $matches)) { foreach ($matches[1] as $match) { $famrec.=addNewFact($match); } } if (safe_POST_bool('SOUR_FAM')) { $famrec = handle_updates($famrec); } else { $famrec = updateRest($famrec); } $success = $success && replace_gedrec($famid, WT_GED_ID, $famrec, $update_CHAN); } } if (!empty($famid) && $famid!="new") { $gedrec = find_gedcom_record($xref, WT_GED_ID, true); $gedrec.= "\n1 FAMS @$famid@"; $success = $success && replace_gedrec($xref, WT_GED_ID, $gedrec, $update_CHAN); } if (!empty($pid)) { $indirec = find_gedcom_record($pid, WT_GED_ID, true); if ($indirec) { if (strpos($indirec, "1 FAMC @$famid@")===false) { $indirec .= "\n1 FAMC @$famid@"; $success = $success && replace_gedrec($pid, WT_GED_ID, $indirec, $update_CHAN); } } } if ($success && !WT_DEBUG) { if (safe_POST('goto')=='new') { $record = WT_Person::getInstance($xref); $controller->addInlineJavascript('closePopupAndReloadParent("' . $record->getRawUrl() . '");'); } else { $controller->addInlineJavascript('closePopupAndReloadParent();'); } } break; //////////////////////////////////////////////////////////////////////////////// case 'addopfchildaction': $controller ->setPageTitle(WT_I18N::translate('Add child')) ->pageHeader(); splitSOUR(); // separate SOUR record from the rest $newindixref=get_new_xref('INDI'); $newfamxref=get_new_xref('FAM'); $gedrec ="0 @{$newindixref}@ INDI".addNewName().addNewSex (); if (preg_match_all('/([A-Z0-9_]+)/', $QUICK_REQUIRED_FACTS, $matches)) { foreach ($matches[1] as $match) { $gedrec.=addNewFact($match); } } if (isset($_REQUEST['PEDI'])) { $PEDI = $_REQUEST['PEDI']; } else { $PEDI=''; } $gedrec.="\n".WT_Gedcom_Code_Pedi::createNewFamcPedi($PEDI, $newfamxref); if (safe_POST_bool('SOUR_INDI')) { $gedrec=handle_updates($gedrec); } else { $gedrec=updateRest($gedrec); } $famrec="0 @$newfamxref@ FAM\n1 CHIL @{$newindixref}@"; $person=WT_Person::getInstance($pid); if ($person->getSex()=='F') { $famrec.="\n1 WIFE @{$pid}@"; } else { $famrec.="\n1 HUSB @{$pid}@"; } $indirec=find_gedcom_record($pid, WT_GED_ID, true); if ($indirec) { $indirec.="\n1 FAMS @{$newfamxref}@"; $success = replace_gedrec($pid, WT_GED_ID, $indirec, $update_CHAN) && append_gedrec($gedrec, WT_GED_ID) && append_gedrec($famrec, WT_GED_ID); } else { $success = false; } if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'editname': $pid = safe_GET('pid', WT_REGEX_XREF); // print_indi_form() needs this global $person = WT_Person::getInstance($pid); $controller ->setPageTitle(WT_I18N::translate('Edit name')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; // Hide the private data list($gedrec)=$person->privatizeGedcom(WT_USER_ACCESS_LEVEL); $gedlines = explode("\n", trim($gedrec)); $fields = explode(' ', $gedlines[$linenum]); $glevel = $fields[0]; $i = $linenum+1; $namerec = $gedlines[$linenum]; while (($i$glevel)) { $namerec.="\n".$gedlines[$i]; $i++; } print_indi_form('update', '', $linenum, $namerec, '', $person->getSex()); echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'addname': $controller ->setPageTitle(WT_I18N::translate('Add new Name')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; $person=WT_Person::getInstance($pid); print_indi_form('update', '', 'new', 'NEW', '', $person->getSex()); echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'paste': $controller ->setPageTitle(WT_I18N::translate('Add from clipboard')) ->pageHeader(); $gedrec .= "\n".$WT_SESSION->clipboard[$fact]['factrec']; $success=replace_gedrec($pid, WT_GED_ID, $gedrec, $NO_UPDATE_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'reorder_media': // Sort page using Popup $controller ->setPageTitle(WT_I18N::translate('Re-order media')) ->pageHeader(); echo '
'; require_once WT_ROOT.'includes/media_reorder.php'; echo '
'; break; //////////////////////////////////////////////////////////////////////////////// case 'reorder_media_update': // Update sort using popup $controller ->setPageTitle(WT_I18N::translate('Re-order media')) ->pageHeader(); if (isset($_REQUEST['order1'])) $order1 = $_REQUEST['order1']; $lines = explode("\n", $gedrec); $newgedrec = ""; foreach ($lines as $line) { if (strpos($line, '1 _WT_OBJE_SORT')===false) { $newgedrec .= $line."\n"; } } foreach ($order1 as $m_media=>$num) { $newgedrec .= "\n1 _WT_OBJE_SORT @".$m_media."@"; } $success=replace_gedrec($pid, WT_GED_ID, $newgedrec, $update_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'al_reset_media_update': // Reset sort using Album Page $controller ->setPageTitle(WT_I18N::translate('Re-order media')) ->pageHeader(); $lines = explode("\n", $gedrec); $newgedrec = ""; foreach ($lines as $line) { if (strpos($line, "1 _WT_OBJE_SORT")===false) { $newgedrec .= $line."\n"; } } $success=replace_gedrec($pid, WT_GED_ID, $newgedrec, $update_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'al_reorder_media_update': // Update sort using Album Page $controller ->setPageTitle(WT_I18N::translate('Re-order media')) ->pageHeader(); if (isset($_REQUEST['order1'])) $order1 = $_REQUEST['order1']; function SwapArray($Array) { $Values = array(); while (list($Key, $Val) = each($Array)) $Values[$Val] = $Key; return $Values; } if (isset($_REQUEST['order2'])) $order2 = $_REQUEST['order2']; $order2 = SwapArray(explode(",", substr($order2, 0, -1))); $lines = explode("\n", $gedrec); $newgedrec = ""; foreach ($lines as $line) { if (strpos($line, "1 _WT_OBJE_SORT")===false) { $newgedrec .= $line."\n"; } } foreach ($order2 as $m_media=>$num) { $newgedrec .= "\n1 _WT_OBJE_SORT @".$m_media."@"; } $success=replace_gedrec($pid, WT_GED_ID, $newgedrec, $update_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'reorder_children': $controller ->addInlineJavascript('jQuery("#reorder_list").sortable({forceHelperSize: true, forcePlaceholderSize: true, opacity: 0.7, cursor: "move", axis: "y"});') //-- update the order numbers after drag-n-drop sorting is complete ->addInlineJavascript('jQuery("#reorder_list").bind("sortupdate", function(event, ui) { jQuery("#"+jQuery(this).attr("id")+" input").each( function (index, value) { value.value = index+1; }); });') ->setPageTitle(WT_I18N::translate('Re-order children')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; ?>
    getChildren() as $child) { $ids[]=$child->getXref(); } if ($family->getUpdatedFamily()) $family = $family->getUpdatedFamily(); $children = array(); foreach ($family->getChildren() as $k=>$child) { $bdate = $child->getEstimatedBirthDate(); if ($bdate->isOK()) { $sortkey = $bdate->JD(); } else { $sortkey = 1e8; // birth date missing => sort last } $children[$child->getXref()] = $sortkey; } if ((!empty($option))&&($option=="bybirth")) { asort($children); } $i=0; $show_full = 1; // Force details to show for each child foreach ($children as $id=>$child) { echo '
  • '; print_pedigree_person(WT_Person::getInstance($id), 2); echo ''; echo '
  • '; $i++; } echo '
'; if (WT_USER_IS_ADMIN) { echo "
"; echo WT_Gedcom_Tag::getLabel('CHAN'), ""; echo ''; echo WT_I18N::translate('Do not update the “last change” record'), help_link('no_update_CHAN'); echo WT_Gedcom_Tag::getLabelValue('DATE', $family->LastChangeTimestamp()); echo WT_Gedcom_Tag::getLabelValue('_WT_USER', $family->LastChangeUser()); echo '
'; } ?>

setPageTitle(WT_I18N::translate('Change Family Members')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; $father = $family->getHusband(); $mother = $family->getWife(); $children = $family->getChildren(); if (count($children)>0) { if (!is_null($father)) { if ($father->getSex()=="F") { $father->setLabel(WT_I18N::translate('mother')); } else { $father->setLabel(WT_I18N::translate('father')); } } if (!is_null($mother)) { if ($mother->getSex()=="M") { $mother->setLabel(WT_I18N::translate('father')); } else { $mother->setLabel(WT_I18N::translate('mother')); } } for ($i=0; $igetSex()=="M") { $children[$i]->setLabel(WT_I18N::translate('son')); } elseif ($children[$i]->getSex()=="F") { $children[$i]->setLabel(WT_I18N::translate('daughter')); } else { $children[$i]->setLabel(WT_I18N::translate('child')); } } } } else { if (!is_null($father)) { if ($father->getSex()=="F") { $father->setLabel(WT_I18N::translate('wife')); } elseif ($father->getSex()=="M") { $father->setLabel(WT_I18N::translate('husband')); } else { $father->setLabel(WT_I18N::translate('spouse')); } } if (!is_null($mother)) { if ($mother->getSex()=="F") { $mother->setLabel(WT_I18N::translate('wife')); } elseif ($mother->getSex()=="M") { $mother->setLabel(WT_I18N::translate('husband')); } else { $father->setLabel(WT_I18N::translate('spouse')); } } } ?>


For each member in the family, you can use the Change link to choose a different person to fill that role in the family. You can also use the Remove link to remove that person from the family.

When you have finished changing the family members, click the Save button to save the changes.'); ?>

getLabel(); ?> getFullName(); ?>
getLabel(); ?> getFullName(); ?>
getLabel(); ?> getFullName(); ?>

setPageTitle(WT_I18N::translate('Change Family Members')) ->pageHeader(); $family = new WT_Family($gedrec); $father = $family->getHusband(); $mother = $family->getWife(); $children = $family->getChildren(); $updated = false; //-- add the new father link if (isset($_REQUEST['HUSB'])) $HUSB = $_REQUEST['HUSB']; if (!empty($HUSB) && (is_null($father) || $father->getXref()!=$HUSB)) { if (strstr($gedrec, "1 HUSB")!==false) { $gedrec = preg_replace("/1 HUSB @.*@/", "1 HUSB @$HUSB@", $gedrec); } else { $gedrec .= "\n1 HUSB @$HUSB@"; } $indirec = find_gedcom_record($HUSB, WT_GED_ID, true); if (!empty($indirec) && (strpos($indirec, "1 FAMS @$famid@")===false)) { $indirec .= "\n1 FAMS @$famid@"; replace_gedrec($HUSB, WT_GED_ID, $indirec, $update_CHAN); } $updated = true; } //-- remove the father link if (empty($HUSB)) { $pos1 = strpos($gedrec, "1 HUSB @"); if ($pos1!==false) { $pos2 = strpos($gedrec, "\n1", $pos1+5); if ($pos2===false) { $pos2 = strlen($gedrec); } else { $pos2++; } $gedrec = substr($gedrec, 0, $pos1) . substr($gedrec, $pos2); } $updated = true; } //-- remove the FAMS link from the old father if (!is_null($father) && $father->getXref()!=$HUSB) { $indirec = find_gedcom_record($father->getXref(), WT_GED_ID, true); $pos1 = strpos($indirec, "1 FAMS @$famid@"); if ($pos1!==false) { $pos2 = strpos($indirec, "\n1", $pos1+5); if ($pos2===false) { $pos2 = strlen($indirec); } else { $pos2++; } $indirec = substr($indirec, 0, $pos1) . substr($indirec, $pos2); replace_gedrec($father->getXref(), WT_GED_ID, $indirec, $update_CHAN); } } //-- add the new mother link if (isset($_REQUEST['WIFE'])) $WIFE = $_REQUEST['WIFE']; if (!empty($WIFE) && (is_null($mother) || $mother->getXref()!=$WIFE)) { if (strstr($gedrec, "1 WIFE")!==false) { $gedrec = preg_replace("/1 WIFE @.*@/", "1 WIFE @$WIFE@", $gedrec); } else { $gedrec .= "\n1 WIFE @$WIFE@"; } $indirec = find_gedcom_record($WIFE, WT_GED_ID, true); if (!empty($indirec) && (strpos($indirec, "1 FAMS @$famid@")===false)) { $indirec .= "\n1 FAMS @$famid@"; replace_gedrec($WIFE, WT_GED_ID, $indirec, $update_CHAN); } $updated = true; } //-- remove the father link if (empty($WIFE)) { $pos1 = strpos($gedrec, "1 WIFE @"); if ($pos1!==false) { $pos2 = strpos($gedrec, "\n1", $pos1+5); if ($pos2===false) { $pos2 = strlen($gedrec); } else { $pos2++; } $gedrec = substr($gedrec, 0, $pos1) . substr($gedrec, $pos2); } $updated = true; } //-- remove the FAMS link from the old father if (!is_null($mother) && $mother->getXref()!=$WIFE) { $indirec = find_gedcom_record($mother->getXref(), WT_GED_ID, true); $pos1 = strpos($indirec, "1 FAMS @$famid@"); if ($pos1!==false) { $pos2 = strpos($indirec, "\n1", $pos1+5); if ($pos2===false) { $pos2 = strlen($indirec); } else { $pos2++; } $indirec = substr($indirec, 0, $pos1) . substr($indirec, $pos2); replace_gedrec($mother->getXref(), WT_GED_ID, $indirec, $update_CHAN); } } //-- update the children $i=0; $var = "CHIL".$i; $newchildren = array(); while (isset($_REQUEST[$var])) { $CHIL = $_REQUEST[$var]; if (!empty($CHIL)) { $newchildren[] = $CHIL; if (strpos($gedrec, "1 CHIL @$CHIL@")===false) { $gedrec .= "\n1 CHIL @$CHIL@"; $updated = true; $indirec = find_gedcom_record($CHIL, WT_GED_ID, true); if (!empty($indirec) && (strpos($indirec, "1 FAMC @$famid@")===false)) { $indirec .= "\n1 FAMC @$famid@"; replace_gedrec($CHIL, WT_GED_ID, $indirec, $update_CHAN); } } } $i++; $var = "CHIL".$i; } //-- remove the old children foreach ($children as $key=>$child) { if (!is_null($child)) { if (!in_array($child->getXref(), $newchildren)) { //-- remove the CHIL link from the family record $pos1 = strpos($gedrec, "1 CHIL @".$child->getXref()."@"); if ($pos1!==false) { $pos2 = strpos($gedrec, "\n1", $pos1+5); if ($pos2===false) { $pos2 = strlen($gedrec); } else { $pos2++; } $gedrec = substr($gedrec, 0, $pos1) . substr($gedrec, $pos2); $updated = true; } //-- remove the FAMC link from the child record $indirec = find_gedcom_record($child->getXref(), WT_GED_ID, true); $pos1 = strpos($indirec, "1 FAMC @$famid@"); if ($pos1!==false) { $pos2 = strpos($indirec, "\n1", $pos1+5); if ($pos2===false) { $pos2 = strlen($indirec); } else { $pos2++; } $indirec = substr($indirec, 0, $pos1) . substr($indirec, $pos2); replace_gedrec($child->getXref(), WT_GED_ID, $indirec, $update_CHAN); } } } } if ($updated) { $success = replace_gedrec($famid, WT_GED_ID, $gedrec, $update_CHAN); } else { $success = false; } if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'reorder_update': $controller ->setPageTitle(WT_I18N::translate('Re-order children')) ->pageHeader(); if (isset($_REQUEST['order'])) $order = $_REQUEST['order']; asort($order); reset($order); $newgedrec = $gedrec; foreach ($order as $child=>$num) { // move each child subrecord to the bottom, in the order specified $subrec = get_sub_record(1, '1 CHIL @'.$child.'@', $gedrec); $subrec = trim($subrec, "\n"); $newgedrec = str_replace($subrec, '', $newgedrec); $newgedrec .= "\n".$subrec."\n"; } $success = replace_gedrec($pid, WT_GED_ID, $newgedrec, $update_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; //////////////////////////////////////////////////////////////////////////////// case 'reorder_fams': $controller ->addInlineJavascript('jQuery("#reorder_list").sortable({forceHelperSize: true, forcePlaceholderSize: true, opacity: 0.7, cursor: "move", axis: "y"});') //-- update the order numbers after drag-n-drop sorting is complete ->addInlineJavascript('jQuery("#reorder_list").bind("sortupdate", function(event, ui) { jQuery("#"+jQuery(this).attr("id")+" input").each( function (index, value) { value.value = index+1; }); });') ->setPageTitle(WT_I18N::translate('Re-order families')) ->pageHeader(); echo '
'; echo '

', $controller->getPageTitle(), '

'; ?>
    getSpouseFamilies(); if ((!empty($option))&&($option=="bymarriage")) { usort($fams, array('WT_Family', 'CompareMarrDate')); } $i=0; foreach ($fams as $family) { echo '
  • '; echo '', $family->getFullName(), '
    '; echo $family->format_first_major_fact(WT_EVENTS_MARR, 2); echo ''; echo '
  • '; $i++; } ?>

setPageTitle(WT_I18N::translate('Re-order families')) ->pageHeader(); if (isset($_REQUEST['order'])) $order = $_REQUEST['order']; asort($order); reset($order); $lines = explode("\n", $gedrec); $newgedrec = ""; foreach ($lines as $line) { if (strpos($line, "1 FAMS")===false) { $newgedrec .= $line."\n"; } } foreach ($order as $famid=>$num) { $newgedrec .= "\n1 FAMS @".$famid."@"; } $success = replace_gedrec($pid, WT_GED_ID, $newgedrec, $update_CHAN); if ($success && !WT_DEBUG) { $controller->addInlineJavascript('closePopupAndReloadParent();'); } break; } // Keep the existing CHAN record when editing function no_update_chan(WT_GedcomRecord $record) { global $NO_UPDATE_CHAN; $checked = $NO_UPDATE_CHAN ? ' checked="checked"' : ''; if (WT_USER_IS_ADMIN) { return '' . '' . '
' . WT_Gedcom_Tag::getLabel('CHAN') . '' . '' . WT_I18N::translate('Do not update the “last change” record') . help_link('no_update_CHAN') . WT_Gedcom_Tag::getLabelValue('DATE', $record->LastChangeTimestamp()) . WT_Gedcom_Tag::getLabelValue('_WT_USER', $record->LastChangeUser()) . '
'; } else { return ''; } }