hartenthaler / hh_extended_family

webtrees - showing the extended family of an individual (like cousins and uncles, aunts, ...)
GNU General Public License v3.0
23 stars 9 forks source link

Error when fixing GEDCOM "0 — 1 NAME //" error #171

Open TheDutchJewel opened 1 year ago

TheDutchJewel commented 1 year ago

I have a few "0 — 1 NAME //" tags in my GEDCOM.

GECOM error checking recommends changing "//" to "": afbeelding

When I follow that advice, I get the following error message in webtrees: afbeelding

Disabling the hh_extended_family module. fixes this problem.

hartenthaler commented 1 year ago

Oh, this is a bug. I have to release a new version (before Christmas?).

But the recommendation: changing "//" to "" is not ok, because "1 NAME //" is illegal GEDCOM and "1 NAME" is illegal. The recommendation should be: delete "1 NAME".

hartenthaler commented 1 year ago

You can deactivate my module, delete the "1 NAME" record, and reactivate this module.

eyolf commented 1 year ago

Another version of the error occurs when adding a person with no name

Fa10175 commented 1 year ago

when you create a person whose name is not known. we have in the gedcom (webtrees)

1 NAME 2 TYPE BIRTH

with the Extended family module with the error

Table key not defined 1 .../modules_v4/hh_extended_family/src/Factory/Objects/ProbandName.php:122

0 .../modules_v4/hh_extended_family/src/Factory/Objects/ProbandName.php(122) : Fisharebest\Webtrees::Fisharebest\Webtrees{closure}()

1 .../modules_v4/hh_extended_family/src/Factory/Objects/ProbandName.php(99) : Hartenthaler\Webtrees\Module\ExtendedFamily\ProbandName::findNiceNameFromNameParts()

2 .../modules_v4/hh_extended_family/src/Factory/Objects/ProbandName.php(55) : Hartenthaler\Webtrees\ModuleExtendedFamily\ProbandName::findNiceNameFromRufnameOrNameParts()

3 .../modules_v4/hh_extended_family/ExtendedFamily.php(166) : Hartenthaler\Webtrees\ModuleExtendedFamily\ProbandName::findNiceName()

4 .../modules_v4/hh_extended_family/ExtendedFamilyPersonExists.php(71) : Hartenthaler\Webtrees\ModuleExtendedFamily\ExtendedProband()

5 .../modules_v4/hh_extended_family/ExtendedFamilyTabModule.php(126): Hartenthaler\Webtrees\ModuleExtendedFamilyExtendedFamilyPersonExists->__construct()

6 .../modules_v4/hh_extended_family/ExtendedFamilyTabModule.php(555) : HartenthalerWebtreesModuleExtendedFamilyExtendedFamilyTabModule->personExistsInExtendedFamily()

7 .../resources/views/individual-page-tabs.phtml(20) : HartenthalerWebtreesModuleExtendedFamilyExtendedFamilyTabModule->isGrayedOut()

we must deactivate the module to enter the name then reactivate it (not easy) thank you to see and correct this problem

hartenthaler commented 1 year ago

In GEDCOM "no name" is not allowed for "1 NAME". If there is no name then there should be no "1 NAME/2 ...". But again: even if this is illegal GEDCOM there should be no error in my module when you are using such an element.

Fa10175 commented 1 year ago

if I create the parents of a person with webtrees 2.1.16, I normally fill in the father but the name of the mother is unknown the fields name and first name I leave them empty I just fill in birth, death, marriage. if I want to fill in the name or the first name with your module activated, I get the error

Undefined array key 1 ...\modules_v4\hh_extended_family\src\Factory\Objects\ProbandName.php:122

#0 ...\modules_v4\hh_extended_family\src\Factory\Objects\ProbandName.php(122): FisharebestWebtreesWebtrees::FisharebestWebtreesWebclosure}(2, 'Undefined array...', 'C:\D...', 122)
#1 ...\modules_v4\hh_extended_family\src\Factory\Objects\ProbandName.php(99): Hartenthaler\Webtrees\ModuleExtendedFamily\ProbandName::findNiceNameFromNameParts(Object(Cissee\WebtreesExt\IndividualExt))
#2 ...\modules_v4\hh_extended_family\src\Factory\Objects\ProbandName.php(55): Hartenthaler\Webtrees\ModuleExtendedFamily\ProbandName::findNiceNameFromRufnameOrNameParts(Object(Cissee\WebtreesExt\IndividualExt))
#3 ...\modules_v4\hh_extended_family\ExtendedFamily.php(166): Hartenthaler\Webtrees\ModuleExtendedFamily\ProbandName::findNiceName(Object(Cissee\WebtreesExt\IndividualExt), true)
#4 ...\modules_v4\hh_extended_familyExtendedFamilyPersonExists.php(71): Hartenthaler\Webtrees\ModuleExtendedFamilyExtendedFamily->constructProband(Object(CisseeWebtreesExtualExt))
#5 ...\modules_v4\hh_extended_familyExtendedFamilyTabModule.php(126): HartenthalerWebtreesModuleExtendedFamilyExtendedFamilyPersonExists->__construct(Object(CisseeWebtreesExtualExt), Object(stdClass))
#6 ...\modules_v4\hh_extended_familyExtendedFamilyTabModule.php(555): Hartenthaler\Webtrees\ModuleExtendedFamilyExtendedFamilyTabModule->personExistsInExtendedFamily(Object(Cissee\WebtreesExt\IndividualExt))
#7 ...\resources\viewsindividual-page-tabs.phtml(20): Hartenthaler\WebtreesExtendedFamilyTabModule->isGrayedOut(Object(Cissee\WebtreesExt\IndividualExt))

if I deactivate it no problem. the gedcom webtrees 2.1.16 is

0 @I196@ INDI
1 FAMS @U131@
1 SEX F
1 NAME
2 TYPE BIRTH
1 NAME /DUPONT/
2 TYPE MARRIED
2 SURN DUPONT

if I do the same with webtrees 2.1.5, I have no errors

the gedcom webtrees 2.1.5 is

0 @I196@ INDI
1 FAMS @U131@
1 SEX F
1 NAME //
2 TYPE BIRTH
1 NAME /DUPONT/
2 TYPE MARRIED
2 SURN DUPONT

I think that there was an evolution between webtrees 2.1.5 and webtrees 2.1.16 and that's why there is an error.

thanks to look at this problem

hartenthaler commented 1 year ago

Ahh! I can see it. Yes there was a change in webtrees to 2.1.16.

This is a webtrees bug, too. webtrees should not generate the additional

1 NAME
2 TYPE BIRTH

and

1 NAME //
2 TYPE BIRTH

Both are wrong GEDCOM in my opinion. I will write an issue to Greg.

You can avoid this at the moment when you add the mother by selecting as "Type of name" an empty option "" instead of "birth name".

You should remove now all the wrong "1 NAME\n2 TYPE BIRTH" and "1 NAME //\n2 TYPE BIRTH" by using the regular expression search/replace function. Are you familiar with that?

hartenthaler commented 1 year ago

see https://github.com/fisharebest/webtrees/issues/4815

Fa10175 commented 1 year ago

thanks i do the correction and i try to think about that waiting a correction from webtrees

BertKoor commented 1 month ago

See https://www.webtrees.net/index.php/forum/2-open-discussion/39301-recover-lost-name-and-first-name#107376

The GEDCOM you get to process can be virtually anything. A user is not obliged to check for errors and fix them in a certain way.

Do not blame the data. The user is always right.

What you should do is always program defensively. Never assume an array produced by the explode function has a certain number of objects. Always check the size before accessing a specific index. That should be a no-brainer, really..