. */ namespace Fisharebest\Webtrees\SurnameTradition; /** * Children take their father’s surname. Wives take their husband’s surname. */ class PaternalSurnameTradition extends PatrilinealSurnameTradition implements SurnameTraditionInterface { /** * Does this surname tradition change surname at marriage? * * @return bool */ public function hasMarriedNames(): bool { return true; } /** * What names are given to a new parent * * @param string $child_name A GEDCOM NAME * @param string $parent_sex M, F or U * * @return string[] Associative array of GEDCOM name parts (SURN, _MARNM, etc.) */ public function newParentNames(string $child_name, string $parent_sex): array { if (preg_match(self::REGEX_SPFX_SURN, $child_name, $match)) { switch ($parent_sex) { case 'M': return array_filter([ 'NAME' => $match['NAME'], 'SPFX' => $match['SPFX'], 'SURN' => $match['SURN'], ]); case 'F': return [ 'NAME' => '//', '_MARNM' => '/' . trim($match['SPFX'] . ' ' . $match['SURN']) . '/', ]; } } return [ 'NAME' => '//', ]; } /** * What names are given to a new spouse * * @param string $spouse_name A GEDCOM NAME * @param string $spouse_sex M, F or U * * @return string[] Associative array of GEDCOM name parts (SURN, _MARNM, etc.) */ public function newSpouseNames(string $spouse_name, string $spouse_sex): array { if ($spouse_sex === 'F' && preg_match(self::REGEX_SURN, $spouse_name, $match)) { return [ 'NAME' => '//', '_MARNM' => $match['NAME'], ]; } return [ 'NAME' => '//', ]; } }