14ccf2a72SGreg Roach<?php 23976b470SGreg Roach 34ccf2a72SGreg Roach/** 44ccf2a72SGreg Roach * webtrees: online genealogy 58fcd0d32SGreg Roach * Copyright (C) 2019 webtrees development team 64ccf2a72SGreg Roach * This program is free software: you can redistribute it and/or modify 74ccf2a72SGreg Roach * it under the terms of the GNU General Public License as published by 84ccf2a72SGreg Roach * the Free Software Foundation, either version 3 of the License, or 94ccf2a72SGreg Roach * (at your option) any later version. 104ccf2a72SGreg Roach * This program is distributed in the hope that it will be useful, 114ccf2a72SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 124ccf2a72SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 134ccf2a72SGreg Roach * GNU General Public License for more details. 144ccf2a72SGreg Roach * You should have received a copy of the GNU General Public License 154ccf2a72SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 164ccf2a72SGreg Roach */ 17*fcfa147eSGreg Roach 18e7f56f2aSGreg Roachdeclare(strict_types=1); 1915d603e7SGreg Roach 204ccf2a72SGreg Roachnamespace Fisharebest\Webtrees\Census; 214ccf2a72SGreg Roach 2209db5ef8SGreg Roachuse Fisharebest\Webtrees\Date; 23db7d25eeSGreg Roachuse Fisharebest\Webtrees\Individual; 244ccf2a72SGreg Roach 254ccf2a72SGreg Roach/** 264ccf2a72SGreg Roach * The individual's full name. 274ccf2a72SGreg Roach */ 28c1010edaSGreg Roachclass CensusColumnFullName extends AbstractCensusColumn implements CensusColumnInterface 29c1010edaSGreg Roach{ 304ccf2a72SGreg Roach /** 314ccf2a72SGreg Roach * Generate the likely value of this census column, based on available information. 324ccf2a72SGreg Roach * 33db7d25eeSGreg Roach * @param Individual $individual 3415d603e7SGreg Roach * @param Individual $head 35db7d25eeSGreg Roach * 364ccf2a72SGreg Roach * @return string 374ccf2a72SGreg Roach */ 388f53f488SRico Sonntag public function generate(Individual $individual, Individual $head): string 39c1010edaSGreg Roach { 4009db5ef8SGreg Roach $name = $this->nameAtCensusDate($individual, $this->date()); 4109db5ef8SGreg Roach 4209db5ef8SGreg Roach return strip_tags($name['full']); 4309db5ef8SGreg Roach } 4409db5ef8SGreg Roach 4509db5ef8SGreg Roach /** 4609db5ef8SGreg Roach * What was an individual's likely name on a given date, allowing 4709db5ef8SGreg Roach * for marriages and married names. 4809db5ef8SGreg Roach * 4909db5ef8SGreg Roach * @param Individual $individual 5009db5ef8SGreg Roach * @param Date $census_date 5109db5ef8SGreg Roach * 5209db5ef8SGreg Roach * @return string[] 5309db5ef8SGreg Roach */ 548f53f488SRico Sonntag protected function nameAtCensusDate(Individual $individual, Date $census_date): array 55c1010edaSGreg Roach { 5609db5ef8SGreg Roach $names = $individual->getAllNames(); 5709db5ef8SGreg Roach $name = $names[0]; 5809db5ef8SGreg Roach 5939ca88baSGreg Roach foreach ($individual->spouseFamilies() as $family) { 608d0ebef0SGreg Roach foreach ($family->facts(['MARR']) as $marriage) { 612decada7SGreg Roach if ($marriage->date()->isOK() && Date::compare($marriage->date(), $census_date) < 0) { 6239ca88baSGreg Roach $spouse = $family->spouse($individual); 6309db5ef8SGreg Roach foreach ($names as $individual_name) { 6409db5ef8SGreg Roach foreach ($spouse->getAllNames() as $spouse_name) { 6509db5ef8SGreg Roach if ($individual_name['type'] === '_MARNM' && $individual_name['surn'] === $spouse_name['surn']) { 6609db5ef8SGreg Roach return $individual_name; 6709db5ef8SGreg Roach } 6809db5ef8SGreg Roach } 6909db5ef8SGreg Roach } 7009db5ef8SGreg Roach } 7109db5ef8SGreg Roach } 7209db5ef8SGreg Roach } 7309db5ef8SGreg Roach 7409db5ef8SGreg Roach return $name; 754ccf2a72SGreg Roach } 764ccf2a72SGreg Roach} 77