summaryrefslogtreecommitdiff
path: root/app/Http/Controllers/EditIndividualController.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Http/Controllers/EditIndividualController.php')
-rw-r--r--app/Http/Controllers/EditIndividualController.php1312
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());
+ }
}