app/Report/ReportParserGenerate.php
private function addAncestors(array &$list, string $pid, bool $children = false, int $generations = -1): void
    {
        $genlist                = [$pid];
        $list[$pid]->generation = 1;
        while (count($genlist) > 0) {
            $id = array_shift($genlist);
            if (strpos($id, 'empty') === 0) {
                continue; // id can be something like “empty7”
            }
            $person = Individual::getInstance($id, $this->tree);
            foreach ($person->childFamilies() as $family) {
                $husband = $family->husband();
                $wife    = $family->wife();
                if ($husband) {
                    $list[$husband->xref()]             = $husband;
                    $list[$husband->xref()]->generation = $list[$id]->generation + 1;
                }
                if ($wife) {
                    $list[$wife->xref()]             = $wife;
                    $list[$wife->xref()]->generation = $list[$id]->generation + 1;
                }
                if ($generations == -1 || $list[$id]->generation + 1 < $generations) {
                    if ($husband) {
                        $genlist[] = $husband->xref();
                    }
                    if ($wife) {
                        $genlist[] = $wife->xref();
                    }
                }
                if ($children) {
                    foreach ($family->children() as $child) {
                        $list[$child->xref()] = $child;
                        $list[$child->xref()]->generation = $list[$id]->generation ?? 1;
                    }
                }
            }
        }
    }
private function addAncestors(array &$list, string $pid, bool $children = false, int $generations = -1): void
    {
        $genlist                = [$pid];
        $list[$pid]->generation = 1;
        while (count($genlist) > 0) {
            $id = array_shift($genlist);
            if (strpos($id, 'empty') === 0) {
                continue; // id can be something like “empty7”
            }
            $person = Individual::getInstance($id, $this->tree);
            foreach ($person->childFamilies() as $family) {
                $husband = $family->husband();
                $wife    = $family->wife();
                if ($husband) {
                    $list[$husband->xref()]             = $husband;
                    $list[$husband->xref()]->generation = $list[$id]->generation + 1;
                }
                if ($wife) {
                    $list[$wife->xref()]             = $wife;
                    $list[$wife->xref()]->generation = $list[$id]->generation + 1;
                }
                if ($generations == -1 || $list[$id]->generation + 1 < $generations) {
                    if ($husband) {
                        $genlist[] = $husband->xref();
                    }
                    if ($wife) {
                        $genlist[] = $wife->xref();
                    }
                }
                if ($children) {
                    foreach ($family->children() as $child) {
                        $list[$child->xref()] = $child;
                        $list[$child->xref()]->generation = $list[$id]->generation ?? 1;
                    }
                }
            }
        }
    }
private function addAncestors ( array & $ list , string $ pid , bool $ children = false , int $ generations = - 1 ) : void { $ genlist = [ $ pid ] ; $ list [ $ pid ] -> generation = 1 ; while ( count ( $ genlist ) > 0 ) { $ id = array_shift ( $ genlist ) ; if ( strpos ( $ id , 'empty' ) === 0 ) { continue ; // id can be something like “empty7” } $ person = Individual :: getInstance ( $ id , $ this -> tree ) ; foreach ( $ person -> childFamilies ( ) as $ family ) { $ husband = $ family -> husband ( ) ; $ wife = $ family -> wife ( ) ; if ( $ husband ) { $ list [ $ husband -> xref ( ) ] = $ husband ; $ list [ $ husband -> xref ( ) ] -> generation = $ list [ $ id ] -> generation + 1 ; } if ( $ wife ) { $ list [ $ wife -> xref ( ) ] = $ wife ; $ list [ $ wife -> xref ( ) ] -> generation = $ list [ $ id ] -> generation + 1 ; } if ( $ generations == - 1 || $ list [ $ id ] -> generation + 1 < $ generations ) { if ( $ husband ) { $ genlist [ ] = $ husband -> xref ( ) ; } if ( $ wife ) { $ genlist [ ] = $ wife -> xref ( ) ; } } if ( $ children ) { foreach ( $ family -> children ( ) as $ child ) { $ list [ $ child -> xref ( ) ] = $ child ; $ list [ $ child -> xref ( ) ] -> generation = $ list [ $ id ] -> generation ?? 1 ; } } } } }
Create a list of all ancestors.

@param string[] $list
@param string   $pid
@param bool     $children
@param int      $generations

@return void
Create a list of all ancestors .