diff options
Diffstat (limited to 'app/Http/Controllers/EditIndividualController.php')
| -rw-r--r-- | app/Http/Controllers/EditIndividualController.php | 1312 |
1 files changed, 668 insertions, 644 deletions
diff --git a/app/Http/Controllers/EditIndividualController.php b/app/Http/Controllers/EditIndividualController.php index 325fd84338..5f80edea4d 100644 --- a/app/Http/Controllers/EditIndividualController.php +++ b/app/Http/Controllers/EditIndividualController.php @@ -30,800 +30,824 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * Controller for edit forms and responses. */ -class EditIndividualController extends AbstractEditController { - /** - * @param Request $request - * - * @return Response - */ - public function reorderMedia(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); - $xref = $request->get('xref'); - $individual = Individual::getInstance($xref, $tree); +class EditIndividualController extends AbstractEditController +{ + /** + * @param Request $request + * + * @return Response + */ + public function reorderMedia(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); + $xref = $request->get('xref'); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $title = $individual->getFullName() . ' — ' . I18N::translate('Re-order media'); + $title = $individual->getFullName() . ' — ' . I18N::translate('Re-order media'); - return $this->viewResponse('edit/reorder-media', [ - 'title' => $title, - 'individual' => $individual, - ]); - } + return $this->viewResponse('edit/reorder-media', [ + 'title' => $title, + 'individual' => $individual, + ]); + } - /** - * @param Request $request - * - * @return Response - */ - public function reorderMediaAction(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); - $xref = $request->get('xref'); - $order = (array) $request->get('order', []); - $individual = Individual::getInstance($xref, $tree); + /** + * @param Request $request + * + * @return Response + */ + public function reorderMediaAction(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); + $xref = $request->get('xref'); + $order = (array)$request->get('order', []); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $dummy_facts = ['0 @' . $individual->getXref() . '@ INDI']; - $sort_facts = []; - $keep_facts = []; + $dummy_facts = ['0 @' . $individual->getXref() . '@ INDI']; + $sort_facts = []; + $keep_facts = []; - // Split facts into OBJE and other - foreach ($individual->getFacts() as $fact) { - if ($fact->getTag() === 'OBJE') { - $sort_facts[$fact->getFactId()] = $fact->getGedcom(); - } else { - $keep_facts[] = $fact->getGedcom(); - } - } + // Split facts into OBJE and other + foreach ($individual->getFacts() as $fact) { + if ($fact->getTag() === 'OBJE') { + $sort_facts[$fact->getFactId()] = $fact->getGedcom(); + } else { + $keep_facts[] = $fact->getGedcom(); + } + } - // Sort the facts - uksort($sort_facts, function ($x, $y) use ($order) { - return array_search($x, $order) - array_search($y, $order); - }); + // Sort the facts + uksort($sort_facts, function ($x, $y) use ($order) { + return array_search($x, $order) - array_search($y, $order); + }); - // Merge the facts - $gedcom = implode("\n", array_merge($dummy_facts, $sort_facts, $keep_facts)); + // Merge the facts + $gedcom = implode("\n", array_merge($dummy_facts, $sort_facts, $keep_facts)); - $individual->updateRecord($gedcom, false); + $individual->updateRecord($gedcom, false); - return new RedirectResponse($individual->url()); - } + return new RedirectResponse($individual->url()); + } - /** - * @param Request $request - * - * @return Response - */ - public function reorderNames(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); - $xref = $request->get('xref'); - $individual = Individual::getInstance($xref, $tree); + /** + * @param Request $request + * + * @return Response + */ + public function reorderNames(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); + $xref = $request->get('xref'); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $title = $individual->getFullName() . ' — ' . I18N::translate('Re-order names'); + $title = $individual->getFullName() . ' — ' . I18N::translate('Re-order names'); - return $this->viewResponse('edit/reorder-names', [ - 'title' => $title, - 'individual' => $individual, - ]); - } + return $this->viewResponse('edit/reorder-names', [ + 'title' => $title, + 'individual' => $individual, + ]); + } - /** - * @param Request $request - * - * @return Response - */ - public function reorderNamesAction(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); - $xref = $request->get('xref'); - $order = (array) $request->get('order', []); - $individual = Individual::getInstance($xref, $tree); + /** + * @param Request $request + * + * @return Response + */ + public function reorderNamesAction(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); + $xref = $request->get('xref'); + $order = (array)$request->get('order', []); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $dummy_facts = ['0 @' . $individual->getXref() . '@ INDI']; - $sort_facts = []; - $keep_facts = []; + $dummy_facts = ['0 @' . $individual->getXref() . '@ INDI']; + $sort_facts = []; + $keep_facts = []; - // Split facts into NAME and other - foreach ($individual->getFacts() as $fact) { - if ($fact->getTag() === 'NAME') { - $sort_facts[$fact->getFactId()] = $fact->getGedcom(); - } else { - $keep_facts[] = $fact->getGedcom(); - } - } + // Split facts into NAME and other + foreach ($individual->getFacts() as $fact) { + if ($fact->getTag() === 'NAME') { + $sort_facts[$fact->getFactId()] = $fact->getGedcom(); + } else { + $keep_facts[] = $fact->getGedcom(); + } + } - // Sort the facts - uksort($sort_facts, function ($x, $y) use ($order) { - return array_search($x, $order) - array_search($y, $order); - }); + // Sort the facts + uksort($sort_facts, function ($x, $y) use ($order) { + return array_search($x, $order) - array_search($y, $order); + }); - // Merge the facts - $gedcom = implode("\n", array_merge($dummy_facts, $sort_facts, $keep_facts)); + // Merge the facts + $gedcom = implode("\n", array_merge($dummy_facts, $sort_facts, $keep_facts)); - $individual->updateRecord($gedcom, false); + $individual->updateRecord($gedcom, false); - return new RedirectResponse($individual->url()); - } + return new RedirectResponse($individual->url()); + } - /** - * @param Request $request - * - * @return Response - */ - public function reorderSpouses(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); - $xref = $request->get('xref'); - $individual = Individual::getInstance($xref, $tree); + /** + * @param Request $request + * + * @return Response + */ + public function reorderSpouses(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); + $xref = $request->get('xref'); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $title = $individual->getFullName() . ' — ' . I18N::translate('Re-order families'); + $title = $individual->getFullName() . ' — ' . I18N::translate('Re-order families'); - return $this->viewResponse('edit/reorder-spouses', [ - 'title' => $title, - 'individual' => $individual, - ]); - } + return $this->viewResponse('edit/reorder-spouses', [ + 'title' => $title, + 'individual' => $individual, + ]); + } - /** - * @param Request $request - * - * @return Response - */ - public function reorderSpousesAction(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); - $xref = $request->get('xref'); - $order = (array) $request->get('order', []); - $individual = Individual::getInstance($xref, $tree); + /** + * @param Request $request + * + * @return Response + */ + public function reorderSpousesAction(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); + $xref = $request->get('xref'); + $order = (array)$request->get('order', []); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $dummy_facts = ['0 @' . $individual->getXref() . '@ INDI']; - $sort_facts = []; - $keep_facts = []; + $dummy_facts = ['0 @' . $individual->getXref() . '@ INDI']; + $sort_facts = []; + $keep_facts = []; - // Split facts into FAMS and other - foreach ($individual->getFacts() as $fact) { - if ($fact->getTag() === 'FAMS') { - $sort_facts[$fact->getFactId()] = $fact->getGedcom(); - } else { - $keep_facts[] = $fact->getGedcom(); - } - } + // Split facts into FAMS and other + foreach ($individual->getFacts() as $fact) { + if ($fact->getTag() === 'FAMS') { + $sort_facts[$fact->getFactId()] = $fact->getGedcom(); + } else { + $keep_facts[] = $fact->getGedcom(); + } + } - // Sort the facts - uksort($sort_facts, function ($x, $y) use ($order) { - return array_search($x, $order) - array_search($y, $order); - }); + // Sort the facts + uksort($sort_facts, function ($x, $y) use ($order) { + return array_search($x, $order) - array_search($y, $order); + }); - // Merge the facts - $gedcom = implode("\n", array_merge($dummy_facts, $sort_facts, $keep_facts)); + // Merge the facts + $gedcom = implode("\n", array_merge($dummy_facts, $sort_facts, $keep_facts)); - $individual->updateRecord($gedcom, false); + $individual->updateRecord($gedcom, false); - return new RedirectResponse($individual->url()); - } + return new RedirectResponse($individual->url()); + } - /** - * Add a child to an existing individual (creating a one-parent family). - * - * @param Request $request - * - * @return Response - */ - public function addChild(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * Add a child to an existing individual (creating a one-parent family). + * + * @param Request $request + * + * @return Response + */ + public function addChild(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a child to create a one-parent family'); + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a child to create a one-parent family'); - return $this->viewResponse('edit/new-individual', [ - 'tree' => $tree, - 'title' => $title, - 'nextaction' => 'add_child_to_individual_action', - 'individual' => $individual, - 'family' => null, - 'name_fact' => null, - 'famtag' => 'CHIL', - 'gender' => 'U', - ]); - } + return $this->viewResponse('edit/new-individual', [ + 'tree' => $tree, + 'title' => $title, + 'nextaction' => 'add_child_to_individual_action', + 'individual' => $individual, + 'family' => null, + 'name_fact' => null, + 'famtag' => 'CHIL', + 'gender' => 'U', + ]); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function addChildAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function addChildAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $PEDI = $request->get('PEDI', ''); + $PEDI = $request->get('PEDI', ''); - global $glevels, $tag, $text, $islink; - $glevels = $request->get('glevels', []); - $tag = $request->get('tag', []); - $text = $request->get('text', []); - $islink = $request->get('islink', []); + global $glevels, $tag, $text, $islink; + $glevels = $request->get('glevels', []); + $tag = $request->get('tag', []); + $text = $request->get('text', []); + $islink = $request->get('islink', []); - // Create a family - if ($individual->getSex() === 'F') { - $gedcom = "0 @NEW@ FAM\n1 WIFE @" . $individual->getXref() . '@'; - } else { - $gedcom = "0 @NEW@ FAM\n1 HUSB @" . $individual->getXref() . '@'; - } - $family = $tree->createRecord($gedcom); + // Create a family + if ($individual->getSex() === 'F') { + $gedcom = "0 @NEW@ FAM\n1 WIFE @" . $individual->getXref() . '@'; + } else { + $gedcom = "0 @NEW@ FAM\n1 HUSB @" . $individual->getXref() . '@'; + } + $family = $tree->createRecord($gedcom); - // Link the parent to the family - $individual->createFact('1 FAMS @' . $family->getXref() . '@', true); + // Link the parent to the family + $individual->createFact('1 FAMS @' . $family->getXref() . '@', true); - // Create a child - $this->splitSource(); // separate SOUR record from the rest + // Create a child + $this->splitSource(); // separate SOUR record from the rest - $gedcom = '0 @NEW@ INDI'; - $gedcom .= $this->addNewName($tree); - $gedcom .= $this->addNewSex(); - $gedcom .= "\n" . GedcomCodePedi::createNewFamcPedi($PEDI, $family->getXref()); - if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { - foreach ($matches[1] as $match) { - $gedcom .= $this->addNewFact($tree, $match); - } - } - if ((bool) $request->get('SOUR_INDI')) { - $gedcom = $this->handleUpdates($gedcom); - } else { - $gedcom = $this->updateRest($gedcom); - } + $gedcom = '0 @NEW@ INDI'; + $gedcom .= $this->addNewName($tree); + $gedcom .= $this->addNewSex(); + $gedcom .= "\n" . GedcomCodePedi::createNewFamcPedi($PEDI, $family->getXref()); + if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { + foreach ($matches[1] as $match) { + $gedcom .= $this->addNewFact($tree, $match); + } + } + if ((bool)$request->get('SOUR_INDI')) { + $gedcom = $this->handleUpdates($gedcom); + } else { + $gedcom = $this->updateRest($gedcom); + } - $child = $tree->createRecord($gedcom); + $child = $tree->createRecord($gedcom); - // Link the family to the child - $family->createFact('1 CHIL @' . $child->getXref() . '@', true); + // Link the family to the child + $family->createFact('1 CHIL @' . $child->getXref() . '@', true); - if ($request->get('goto') === 'new') { - return new RedirectResponse($child->url()); - } else { - return new RedirectResponse($individual->url()); - } - } + if ($request->get('goto') === 'new') { + return new RedirectResponse($child->url()); + } else { + return new RedirectResponse($individual->url()); + } + } - /** - * Add a parent to an existing individual (creating a one-parent family). - * - * @param Request $request - * - * @return Response - */ - public function addParent(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * Add a parent to an existing individual (creating a one-parent family). + * + * @param Request $request + * + * @return Response + */ + public function addParent(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); - $gender = $request->get('gender', 'U'); + $xref = $request->get('xref', ''); + $gender = $request->get('gender', 'U'); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - if ($gender === 'F') { - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a mother'); - $famtag = 'WIFE'; - } else { - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a father'); - $famtag = 'HUSB'; - } + if ($gender === 'F') { + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a mother'); + $famtag = 'WIFE'; + } else { + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a father'); + $famtag = 'HUSB'; + } - return $this->viewResponse('edit/new-individual', [ - 'tree' => $tree, - 'title' => $title, - 'nextaction' => 'add_parent_to_individual_action', - 'individual' => $individual, - 'family' => null, - 'name_fact' => null, - 'famtag' => $famtag, - 'gender' => $gender, - ]); - } + return $this->viewResponse('edit/new-individual', [ + 'tree' => $tree, + 'title' => $title, + 'nextaction' => 'add_parent_to_individual_action', + 'individual' => $individual, + 'family' => null, + 'name_fact' => null, + 'famtag' => $famtag, + 'gender' => $gender, + ]); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function addParentAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function addParentAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - global $glevels, $tag, $text, $islink; - $glevels = $request->get('glevels', []); - $tag = $request->get('tag', []); - $text = $request->get('text', []); - $islink = $request->get('islink', []); + global $glevels, $tag, $text, $islink; + $glevels = $request->get('glevels', []); + $tag = $request->get('tag', []); + $text = $request->get('text', []); + $islink = $request->get('islink', []); - // Create a new family - $gedcom = "0 @NEW@ FAM\n1 CHIL @" . $individual->getXref() . '@'; - $family = $tree->createRecord($gedcom); + // Create a new family + $gedcom = "0 @NEW@ FAM\n1 CHIL @" . $individual->getXref() . '@'; + $family = $tree->createRecord($gedcom); - // Link the child to the family - $individual->createFact('1 FAMC @' . $family->getXref() . '@', true); + // Link the child to the family + $individual->createFact('1 FAMC @' . $family->getXref() . '@', true); - // Create a child - $this->splitSource(); // separate SOUR record from the rest + // Create a child + $this->splitSource(); // separate SOUR record from the rest - $gedcom = '0 @NEW@ INDI'; - $gedcom .= $this->addNewName($tree); - $gedcom .= $this->addNewSex(); - if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { - foreach ($matches[1] as $match) { - $gedcom .= $this->addNewFact($tree, $match); - } - } - if ((bool) $request->get('SOUR_INDI')) { - $gedcom = $this->handleUpdates($gedcom); - } else { - $gedcom = $this->updateRest($gedcom); - } - $gedcom .= "\n1 FAMS @" . $family->getXref() . '@'; + $gedcom = '0 @NEW@ INDI'; + $gedcom .= $this->addNewName($tree); + $gedcom .= $this->addNewSex(); + if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { + foreach ($matches[1] as $match) { + $gedcom .= $this->addNewFact($tree, $match); + } + } + if ((bool)$request->get('SOUR_INDI')) { + $gedcom = $this->handleUpdates($gedcom); + } else { + $gedcom = $this->updateRest($gedcom); + } + $gedcom .= "\n1 FAMS @" . $family->getXref() . '@'; - $parent = $tree->createRecord($gedcom); + $parent = $tree->createRecord($gedcom); - // Link the family to the child - if ($parent->getSex() === 'F') { - $family->createFact('1 WIFE @' . $parent->getXref() . '@', true); - } else { - $family->createFact('1 HUSB @' . $parent->getXref() . '@', true); - } + // Link the family to the child + if ($parent->getSex() === 'F') { + $family->createFact('1 WIFE @' . $parent->getXref() . '@', true); + } else { + $family->createFact('1 HUSB @' . $parent->getXref() . '@', true); + } - if ($request->get('goto') === 'new') { - return new RedirectResponse($parent->url()); - } else { - return new RedirectResponse($individual->url()); - } - } + if ($request->get('goto') === 'new') { + return new RedirectResponse($parent->url()); + } else { + return new RedirectResponse($individual->url()); + } + } - /** - * Add a spouse to an existing individual (creating a new family). - * - * @param Request $request - * - * @return Response - */ - public function addSpouse(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * Add a spouse to an existing individual (creating a new family). + * + * @param Request $request + * + * @return Response + */ + public function addSpouse(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $gender = $request->get('gender', 'F'); - $xref = $request->get('xref', ''); + $gender = $request->get('gender', 'F'); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - if ($gender === 'F') { - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a wife'); - $famtag = 'WIFE'; - } else { - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a husband'); - $famtag = 'HUSB'; - } + if ($gender === 'F') { + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a wife'); + $famtag = 'WIFE'; + } else { + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a husband'); + $famtag = 'HUSB'; + } - return $this->viewResponse('edit/new-individual', [ - 'tree' => $tree, - 'title' => $title, - 'nextaction' => 'add_spouse_to_individual_action', - 'individual' => $individual, - 'family' => null, - 'name_fact' => null, - 'famtag' => $famtag, - 'gender' => $gender, - ]); - } + return $this->viewResponse('edit/new-individual', [ + 'tree' => $tree, + 'title' => $title, + 'nextaction' => 'add_spouse_to_individual_action', + 'individual' => $individual, + 'family' => null, + 'name_fact' => null, + 'famtag' => $famtag, + 'gender' => $gender, + ]); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function addSpouseAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function addSpouseAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $sex = $request->get('SEX', 'U'); + $sex = $request->get('SEX', 'U'); - global $glevels, $tag, $text, $islink; - $glevels = $request->get('glevels', []); - $tag = $request->get('tag', []); - $text = $request->get('text', []); - $islink = $request->get('islink', []); + global $glevels, $tag, $text, $islink; + $glevels = $request->get('glevels', []); + $tag = $request->get('tag', []); + $text = $request->get('text', []); + $islink = $request->get('islink', []); - $this->splitSource(); - $indi_gedcom = '0 @REF@ INDI'; - $indi_gedcom .= $this->addNewName($tree); - $indi_gedcom .= $this->addNewSex(); - if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { - foreach ($matches[1] as $match) { - $indi_gedcom .= $this->addNewFact($tree, $match); - } - } - if ((bool) $request->get('SOUR_INDI')) { - $indi_gedcom = $this->handleUpdates($indi_gedcom); - } else { - $indi_gedcom = $this->updateRest($indi_gedcom); - } + $this->splitSource(); + $indi_gedcom = '0 @REF@ INDI'; + $indi_gedcom .= $this->addNewName($tree); + $indi_gedcom .= $this->addNewSex(); + if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { + foreach ($matches[1] as $match) { + $indi_gedcom .= $this->addNewFact($tree, $match); + } + } + if ((bool)$request->get('SOUR_INDI')) { + $indi_gedcom = $this->handleUpdates($indi_gedcom); + } else { + $indi_gedcom = $this->updateRest($indi_gedcom); + } - $fam_gedcom = ''; - if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FAMFACTS'), $matches)) { - foreach ($matches[1] as $match) { - $fam_gedcom .= $this->addNewFact($tree, $match); - } - } - if ((bool) $request->get('SOUR_FAM')) { - $fam_gedcom = $this->handleUpdates($fam_gedcom); - } else { - $fam_gedcom = $this->updateRest($fam_gedcom); - } + $fam_gedcom = ''; + if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FAMFACTS'), $matches)) { + foreach ($matches[1] as $match) { + $fam_gedcom .= $this->addNewFact($tree, $match); + } + } + if ((bool)$request->get('SOUR_FAM')) { + $fam_gedcom = $this->handleUpdates($fam_gedcom); + } else { + $fam_gedcom = $this->updateRest($fam_gedcom); + } - // Create the new spouse - $spouse = $tree->createRecord($indi_gedcom); - // Create a new family - if ($sex === 'F') { - $family = $tree->createRecord("0 @NEW@ FAM\n1 WIFE @" . $spouse->getXref() . "@\n1 HUSB @" . $individual->getXref() . '@' . $fam_gedcom); - } else { - $family = $tree->createRecord("0 @NEW@ FAM\n1 HUSB @" . $spouse->getXref() . "@\n1 WIFE @" . $individual->getXref() . '@' . $fam_gedcom); - } - // Link the spouses to the family - $spouse->createFact('1 FAMS @' . $family->getXref() . '@', true); - $individual->createFact('1 FAMS @' . $family->getXref() . '@', true); + // Create the new spouse + $spouse = $tree->createRecord($indi_gedcom); + // Create a new family + if ($sex === 'F') { + $family = $tree->createRecord("0 @NEW@ FAM\n1 WIFE @" . $spouse->getXref() . "@\n1 HUSB @" . $individual->getXref() . '@' . $fam_gedcom); + } else { + $family = $tree->createRecord("0 @NEW@ FAM\n1 HUSB @" . $spouse->getXref() . "@\n1 WIFE @" . $individual->getXref() . '@' . $fam_gedcom); + } + // Link the spouses to the family + $spouse->createFact('1 FAMS @' . $family->getXref() . '@', true); + $individual->createFact('1 FAMS @' . $family->getXref() . '@', true); - if ($request->get('goto') === 'new') { - return new RedirectResponse($spouse->url()); - } else { - return new RedirectResponse($individual->url()); - } - } + if ($request->get('goto') === 'new') { + return new RedirectResponse($spouse->url()); + } else { + return new RedirectResponse($individual->url()); + } + } - /** - * Add an unlinked individual - * - * @param Request $request - * - * @return Response - */ - public function addUnlinked(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * Add an unlinked individual + * + * @param Request $request + * + * @return Response + */ + public function addUnlinked(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - return $this->viewResponse('edit/new-individual', [ - 'tree' => $tree, - 'title' => I18N::translate('Create an individual'), - 'nextaction' => 'add_unlinked_indi_action', - 'individual' => null, - 'family' => null, - 'name_fact' => null, - 'famtag' => '', - 'gender' => 'U', - ]); - } + return $this->viewResponse('edit/new-individual', [ + 'tree' => $tree, + 'title' => I18N::translate('Create an individual'), + 'nextaction' => 'add_unlinked_indi_action', + 'individual' => null, + 'family' => null, + 'name_fact' => null, + 'famtag' => '', + 'gender' => 'U', + ]); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function addUnlinkedAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function addUnlinkedAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - global $glevels, $tag, $text, $islink; - $glevels = $request->get('glevels', []); - $tag = $request->get('tag', []); - $text = $request->get('text', []); - $islink = $request->get('islink', []); + global $glevels, $tag, $text, $islink; + $glevels = $request->get('glevels', []); + $tag = $request->get('tag', []); + $text = $request->get('text', []); + $islink = $request->get('islink', []); - $this->splitSource(); - $gedrec = '0 @REF@ INDI'; - $gedrec .= $this->addNewName($tree); - $gedrec .= $this->addNewSex(); - if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { - foreach ($matches[1] as $match) { - $gedrec .= $this->addNewFact($tree, $match); - } - } - if ((BOOL) $request->get('SOUR_INDI')) { - $gedrec = $this->handleUpdates($gedrec); - } else { - $gedrec = $this->updateRest($gedrec); - } + $this->splitSource(); + $gedrec = '0 @REF@ INDI'; + $gedrec .= $this->addNewName($tree); + $gedrec .= $this->addNewSex(); + if (preg_match_all('/([A-Z0-9_]+)/', $tree->getPreference('QUICK_REQUIRED_FACTS'), $matches)) { + foreach ($matches[1] as $match) { + $gedrec .= $this->addNewFact($tree, $match); + } + } + if ((BOOL)$request->get('SOUR_INDI')) { + $gedrec = $this->handleUpdates($gedrec); + } else { + $gedrec = $this->updateRest($gedrec); + } - $new_indi = $tree->createRecord($gedrec); + $new_indi = $tree->createRecord($gedrec); - if ($request->get('goto') === 'new') { - return new RedirectResponse($new_indi->url()); - } else { - return new RedirectResponse(route('admin-trees', ['ged' => $tree->getName()])); - } - } + if ($request->get('goto') === 'new') { + return new RedirectResponse($new_indi->url()); + } else { + return new RedirectResponse(route('admin-trees', ['ged' => $tree->getName()])); + } + } - /** - * Edit a name record. - * - * @param Request $request - * - * @return Response - */ - public function editName(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * Edit a name record. + * + * @param Request $request + * + * @return Response + */ + public function editName(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $fact_id = $request->get('fact_id', ''); - $xref = $request->get('xref', ''); + $fact_id = $request->get('fact_id', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - // Find the fact to edit - $name_fact = null; - foreach ($individual->getFacts() as $fact) { - if ($fact->getFactId() === $fact_id && $fact->canEdit()) { - return $this->viewResponse('edit/new-individual', [ - 'tree' => $tree, - 'title' => I18N::translate('Edit the name'), - 'nextaction' => 'update', - 'individual' => $individual, - 'family' => null, - 'name_fact' => $name_fact, - 'famtag' => '', - 'gender' => $individual->getSex(), - ]); - } - } + // Find the fact to edit + $name_fact = null; + foreach ($individual->getFacts() as $fact) { + if ($fact->getFactId() === $fact_id && $fact->canEdit()) { + return $this->viewResponse('edit/new-individual', [ + 'tree' => $tree, + 'title' => I18N::translate('Edit the name'), + 'nextaction' => 'update', + 'individual' => $individual, + 'family' => null, + 'name_fact' => $name_fact, + 'famtag' => '', + 'gender' => $individual->getSex(), + ]); + } + } - throw new NotFoundHttpException; - } + throw new NotFoundHttpException; + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function editNameAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function editNameAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - // @TODO move edit_interface.php code here + // @TODO move edit_interface.php code here - return new RedirectResponse($individual->url()); - } + return new RedirectResponse($individual->url()); + } - /** - * Add a new name record. - * - * @param Request $request - * - * @return Response - */ - public function addName(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * Add a new name record. + * + * @param Request $request + * + * @return Response + */ + public function addName(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $title = $individual->getFullName() . ' — ' . I18N::translate('Add a name'); + $title = $individual->getFullName() . ' — ' . I18N::translate('Add a name'); - return $this->viewResponse('edit/new-individual', [ - 'tree' => $tree, - 'title' => $title, - 'nextaction' => 'update', - 'individual' => $individual, - 'family' => null, - 'name_fact' => null, - 'famtag' => '', - 'gender' => $individual->getSex(), - ]); - } + return $this->viewResponse('edit/new-individual', [ + 'tree' => $tree, + 'title' => $title, + 'nextaction' => 'update', + 'individual' => $individual, + 'family' => null, + 'name_fact' => null, + 'famtag' => '', + 'gender' => $individual->getSex(), + ]); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function addNameAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function addNameAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - // @TODO move edit_interface.php code here + // @TODO move edit_interface.php code here - return new RedirectResponse($individual->url()); - } + return new RedirectResponse($individual->url()); + } - /** - * @param Request $request - * - * @return Response - */ - public function linkChildToFamily(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return Response + */ + public function linkChildToFamily(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); + $xref = $request->get('xref', ''); - $individual = Individual::getInstance($xref, $tree); + $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $this->checkIndividualAccess($individual, true); - $title = $individual->getFullName() . ' - ' . I18N::translate('Link this individual to an existing family as a child'); + $title = $individual->getFullName() . ' - ' . I18N::translate('Link this individual to an existing family as a child'); - return $this->viewResponse('edit/link-child-to-family', [ - 'individual' => $individual, - 'title' => $title, - ]); - } + return $this->viewResponse('edit/link-child-to-family', [ + 'individual' => $individual, + 'title' => $title, + ]); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function linkChildToFamilyAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function linkChildToFamilyAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $xref = $request->get('xref', ''); - $famid = $request->get('famid', ''); - $PEDI = $request->get('PEDI', ''); + $xref = $request->get('xref', ''); + $famid = $request->get('famid', ''); + $PEDI = $request->get('PEDI', ''); - $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $individual = Individual::getInstance($xref, $tree); + $this->checkIndividualAccess($individual, true); - $family = Family::getInstance($famid, $tree); - $this->checkFamilyAccess($family, true); + $family = Family::getInstance($famid, $tree); + $this->checkFamilyAccess($family, true); - // Replace any existing child->family link (we may be changing the PEDI); - $fact_id = null; - foreach ($individual->getFacts('FAMC') as $fact) { - if ($family === $fact->getTarget()) { - $fact_id = $fact->getFactId(); - break; - } - } + // Replace any existing child->family link (we may be changing the PEDI); + $fact_id = null; + foreach ($individual->getFacts('FAMC') as $fact) { + if ($family === $fact->getTarget()) { + $fact_id = $fact->getFactId(); + break; + } + } - $gedcom = GedcomCodePedi::createNewFamcPedi($PEDI, $famid); - $individual->updateFact($fact_id, $gedcom, true); + $gedcom = GedcomCodePedi::createNewFamcPedi($PEDI, $famid); + $individual->updateFact($fact_id, $gedcom, true); - // Only set the family->child link if it does not already exist - $chil_link_exists = false; - foreach ($family->getFacts('CHIL') as $fact) { - if ($individual === $fact->getTarget()) { - $chil_link_exists = true; - break; - } - } + // Only set the family->child link if it does not already exist + $chil_link_exists = false; + foreach ($family->getFacts('CHIL') as $fact) { + if ($individual === $fact->getTarget()) { + $chil_link_exists = true; + break; + } + } - if (!$chil_link_exists) { - $family->createFact('1 CHIL @' . $individual->getXref() . '@', true); - } + if (!$chil_link_exists) { + $family->createFact('1 CHIL @' . $individual->getXref() . '@', true); + } - return new RedirectResponse($individual->url()); - } - /** - * @param Request $request - * - * @return Response - */ - public function linkSpouseToIndividual(Request $request): Response { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + return new RedirectResponse($individual->url()); + } - $xref = $request->get('xref', ''); + /** + * @param Request $request + * + * @return Response + */ + public function linkSpouseToIndividual(Request $request): Response + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $individual = Individual::getInstance($xref, $tree); + $xref = $request->get('xref', ''); - $this->checkIndividualAccess($individual, true); + $individual = Individual::getInstance($xref, $tree); - if ($individual->getSex() === 'F') { - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a husband using an existing individual'); - $label = I18N::translate('Husband'); - } else { - $title = $individual->getFullName() . ' - ' . I18N::translate('Add a wife using an existing individual'); - $label = I18N::translate('Wife'); - } + $this->checkIndividualAccess($individual, true); - return $this->viewResponse('edit/link-spouse-to-individual', [ - 'individual' => $individual, - 'label' => $label, - 'title' => $title, - ]); - } + if ($individual->getSex() === 'F') { + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a husband using an existing individual'); + $label = I18N::translate('Husband'); + } else { + $title = $individual->getFullName() . ' - ' . I18N::translate('Add a wife using an existing individual'); + $label = I18N::translate('Wife'); + } - /** - * @param Request $request - * - * @return RedirectResponse - */ - public function linkSpouseToIndividualAction(Request $request): RedirectResponse { - /** @var Tree $tree */ - $tree = $request->attributes->get('tree'); + return $this->viewResponse('edit/link-spouse-to-individual', [ + 'individual' => $individual, + 'label' => $label, + 'title' => $title, + ]); + } - $xref = $request->get('xref', ''); - $spouse = $request->get('spid', ''); + /** + * @param Request $request + * + * @return RedirectResponse + */ + public function linkSpouseToIndividualAction(Request $request): RedirectResponse + { + /** @var Tree $tree */ + $tree = $request->attributes->get('tree'); - $individual = Individual::getInstance($xref, $tree); - $this->checkIndividualAccess($individual, true); + $xref = $request->get('xref', ''); + $spouse = $request->get('spid', ''); - $spouse = Individual::getInstance($spouse, $tree); - $this->checkIndividualAccess($spouse, true); + $individual = Individual::getInstance($xref, $tree); + $this->checkIndividualAccess($individual, true); - if ($individual->getSex() === 'M') { - $gedcom = "0 @new@ FAM\n1 HUSB @" . $individual->getXref() . "@\n1 WIFE @" . $spouse->getXref() . '@'; - } else { - $gedcom = "0 @new@ FAM\n1 WIFE @" . $individual->getXref() . "@\n1 HUSB @" . $spouse->getXref() . '@'; - } + $spouse = Individual::getInstance($spouse, $tree); + $this->checkIndividualAccess($spouse, true); - $gedcom .= $this->addNewFact($tree, 'MARR'); + if ($individual->getSex() === 'M') { + $gedcom = "0 @new@ FAM\n1 HUSB @" . $individual->getXref() . "@\n1 WIFE @" . $spouse->getXref() . '@'; + } else { + $gedcom = "0 @new@ FAM\n1 WIFE @" . $individual->getXref() . "@\n1 HUSB @" . $spouse->getXref() . '@'; + } - $family = $tree->createRecord($gedcom); + $gedcom .= $this->addNewFact($tree, 'MARR'); - $individual->createFact('1 FAMS @' . $family->getXref() . '@', true); - $spouse->createFact('1 FAMS @' . $family->getXref() . '@', true); + $family = $tree->createRecord($gedcom); - return new RedirectResponse($family->url()); - } + $individual->createFact('1 FAMS @' . $family->getXref() . '@', true); + $spouse->createFact('1 FAMS @' . $family->getXref() . '@', true); + + return new RedirectResponse($family->url()); + } } |
