gedcomx-php-client
  • Namespace
  • Class

Namespaces

  • Gedcomx
    • Agent
    • Atom
    • Common
    • Conclusion
    • Extensions
      • FamilySearch
        • Platform
          • Artifacts
          • Discussions
          • Tree
          • Users
        • Rs
          • Client
            • FamilyTree
            • Helpers
            • Memories
            • Util
        • Rt
        • Types
    • GedcomxFile
    • Links
    • Records
    • Rs
      • Client
        • Exception
        • Options
        • Util
    • Rt
    • Search
    • Source
    • Support
    • Types
    • Util
    • Vocab

Classes

  • Gedcomx\Agent\Address
  • Gedcomx\Agent\Agent
  • Gedcomx\Agent\OnlineAccount
  • Gedcomx\Atom\Category
  • Gedcomx\Atom\CommonAttributes
  • Gedcomx\Atom\Content
  • Gedcomx\Atom\Entry
  • Gedcomx\Atom\ExtensibleElement
  • Gedcomx\Atom\Feed
  • Gedcomx\Atom\Generator
  • Gedcomx\Atom\Person
  • Gedcomx\Common\Attribution
  • Gedcomx\Common\CustomEntity
  • Gedcomx\Common\CustomKeyedItem
  • Gedcomx\Common\EvidenceReference
  • Gedcomx\Common\ExtensibleData
  • Gedcomx\Common\Note
  • Gedcomx\Common\Qualifier
  • Gedcomx\Common\ResourceReference
  • Gedcomx\Common\TextValue
  • Gedcomx\Common\UniqueCustomKeyedItem
  • Gedcomx\Conclusion\Conclusion
  • Gedcomx\Conclusion\DateInfo
  • Gedcomx\Conclusion\DisplayProperties
  • Gedcomx\Conclusion\Document
  • Gedcomx\Conclusion\Event
  • Gedcomx\Conclusion\EventRole
  • Gedcomx\Conclusion\Fact
  • Gedcomx\Conclusion\Gender
  • Gedcomx\Conclusion\Identifier
  • Gedcomx\Conclusion\Name
  • Gedcomx\Conclusion\NameForm
  • Gedcomx\Conclusion\NamePart
  • Gedcomx\Conclusion\Person
  • Gedcomx\Conclusion\PlaceDescription
  • Gedcomx\Conclusion\PlaceDisplayProperties
  • Gedcomx\Conclusion\PlaceReference
  • Gedcomx\Conclusion\Relationship
  • Gedcomx\Conclusion\Subject
  • Gedcomx\Extensions\FamilySearch\Error
  • Gedcomx\Extensions\FamilySearch\FamilySearchPlatform
  • Gedcomx\Extensions\FamilySearch\Feature
  • Gedcomx\Extensions\FamilySearch\HealthConfig
  • Gedcomx\Extensions\FamilySearch\Platform\Artifacts\ArtifactMetadata
  • Gedcomx\Extensions\FamilySearch\Platform\Artifacts\ArtifactType
  • Gedcomx\Extensions\FamilySearch\Platform\Discussions\Comment
  • Gedcomx\Extensions\FamilySearch\Platform\Discussions\Discussion
  • Gedcomx\Extensions\FamilySearch\Platform\Error
  • Gedcomx\Extensions\FamilySearch\Platform\HealthConfig
  • Gedcomx\Extensions\FamilySearch\Platform\Tag
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\ChangeInfo
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\ChangeObjectModifier
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\ChangeObjectType
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\ChangeOperation
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\ChildAndParentsRelationship
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\DiscussionReference
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\MatchInfo
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\MatchStatus
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\Merge
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\MergeAnalysis
  • Gedcomx\Extensions\FamilySearch\Platform\Tree\MergeConflict
  • Gedcomx\Extensions\FamilySearch\Platform\Users\User
  • Gedcomx\Extensions\FamilySearch\Rs\Client\DiscussionsState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\DiscussionState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchClient
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchCollectionState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchPlaceDescriptionState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchPlaces
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchPlaceState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchSourceDescriptionState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilySearchStateFactory
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\ChangeHistoryState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\ChildAndParentsRelationshipState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreeCollectionState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreePersonChildrenState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreePersonParentsState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreePersonState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreeRelationshipsState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreeRelationshipState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\FamilyTreeStateFactory
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Helpers\FamilySearchRequest
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Memories\FamilySearchMemories
  • Gedcomx\Extensions\FamilySearch\Rs\Client\PersonMatchResultsState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\PersonMergeState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\PersonNonMatchesState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Rel
  • Gedcomx\Extensions\FamilySearch\Rs\Client\UserHistoryState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\UserState
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Util\ChangeEntry
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Util\ChangeHistoryPage
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Util\LoggerMiddleware
  • Gedcomx\Extensions\FamilySearch\Rs\Client\Util\ThrottlingMiddleware
  • Gedcomx\Extensions\FamilySearch\Rt\FamilySearchPlatformLocalReferenceResolver
  • Gedcomx\Extensions\FamilySearch\Rt\FamilySearchPlatformModelVisitorBase
  • Gedcomx\Extensions\FamilySearch\Tag
  • Gedcomx\Extensions\FamilySearch\Types\FactType
  • Gedcomx\Gedcomx
  • Gedcomx\GedcomxFile\DefaultJsonSerialization
  • Gedcomx\GedcomxFile\DefaultXMLSerialization
  • Gedcomx\GedcomxFile\GedcomxFile
  • Gedcomx\GedcomxFile\GedcomxFileEntry
  • Gedcomx\GedcomxFile\GedcomxOutput
  • Gedcomx\GedcomxFile\Manifest
  • Gedcomx\GedcomxFile\ManifestAttribute
  • Gedcomx\Links\HypermediaEnabledData
  • Gedcomx\Links\Link
  • Gedcomx\Records\Collection
  • Gedcomx\Records\CollectionContent
  • Gedcomx\Records\Field
  • Gedcomx\Records\FieldDescriptor
  • Gedcomx\Records\FieldValue
  • Gedcomx\Records\FieldValueDescriptor
  • Gedcomx\Records\RecordDescriptor
  • Gedcomx\Records\RecordSet
  • Gedcomx\Records\RecordSetIterator
  • Gedcomx\Rs\Client\AgentState
  • Gedcomx\Rs\Client\AncestryResultsState
  • Gedcomx\Rs\Client\CollectionsState
  • Gedcomx\Rs\Client\CollectionState
  • Gedcomx\Rs\Client\DescendancyResultsState
  • Gedcomx\Rs\Client\GedcomxApplicationState
  • Gedcomx\Rs\Client\GedcomxSearchQuery
  • Gedcomx\Rs\Client\Options\CacheDirectives
  • Gedcomx\Rs\Client\Options\HeaderParameter
  • Gedcomx\Rs\Client\Options\Preconditions
  • Gedcomx\Rs\Client\Options\QueryParameter
  • Gedcomx\Rs\Client\PersonChildrenState
  • Gedcomx\Rs\Client\PersonParentsState
  • Gedcomx\Rs\Client\PersonSearchResultsState
  • Gedcomx\Rs\Client\PersonSpousesState
  • Gedcomx\Rs\Client\PersonsState
  • Gedcomx\Rs\Client\PersonState
  • Gedcomx\Rs\Client\PlaceDescriptionsState
  • Gedcomx\Rs\Client\PlaceDescriptionState
  • Gedcomx\Rs\Client\PlaceGroupState
  • Gedcomx\Rs\Client\PlaceSearchResultsState
  • Gedcomx\Rs\Client\RecordsState
  • Gedcomx\Rs\Client\RecordState
  • Gedcomx\Rs\Client\Rel
  • Gedcomx\Rs\Client\RelationshipsState
  • Gedcomx\Rs\Client\RelationshipState
  • Gedcomx\Rs\Client\SearchParameter
  • Gedcomx\Rs\Client\SourceDescriptionsState
  • Gedcomx\Rs\Client\SourceDescriptionState
  • Gedcomx\Rs\Client\StateFactory
  • Gedcomx\Rs\Client\Util\AncestryNode
  • Gedcomx\Rs\Client\Util\AncestryTree
  • Gedcomx\Rs\Client\Util\DataSource
  • Gedcomx\Rs\Client\Util\DescendancyNode
  • Gedcomx\Rs\Client\Util\DescendancyTree
  • Gedcomx\Rs\Client\Util\EmbeddedLinkLoader
  • Gedcomx\Rs\Client\Util\Embedding
  • Gedcomx\Rs\Client\Util\GedcomxBaseSearchQueryBuilder
  • Gedcomx\Rs\Client\Util\GedcomxPersonSearchQueryBuilder
  • Gedcomx\Rs\Client\Util\GedcomxPlaceSearchQueryBuilder
  • Gedcomx\Rs\Client\Util\HttpStatus
  • Gedcomx\Rs\Client\Util\RdfCollection
  • Gedcomx\Rs\Client\Util\RdfNode
  • Gedcomx\Rs\Client\Util\SearchParameter
  • Gedcomx\Rs\Client\VocabConstants
  • Gedcomx\Rs\Client\VocabElementListState
  • Gedcomx\Rs\Client\VocabElementState
  • Gedcomx\Rt\GedcomxLocalReferenceResolver
  • Gedcomx\Rt\GedcomxModelVisitorBase
  • Gedcomx\Search\ResultConfidence
  • Gedcomx\Source\CitationField
  • Gedcomx\Source\Coverage
  • Gedcomx\Source\SourceCitation
  • Gedcomx\Source\SourceDescription
  • Gedcomx\Source\SourceReference
  • Gedcomx\Types\ConfidenceLevel
  • Gedcomx\Types\DocumentType
  • Gedcomx\Types\EventRoleType
  • Gedcomx\Types\EventType
  • Gedcomx\Types\FactType
  • Gedcomx\Types\FieldType
  • Gedcomx\Types\FieldValueType
  • Gedcomx\Types\GenderType
  • Gedcomx\Types\IdentifierType
  • Gedcomx\Types\NamePartType
  • Gedcomx\Types\NameType
  • Gedcomx\Types\RecordType
  • Gedcomx\Types\RelationshipType
  • Gedcomx\Types\ResourceType
  • Gedcomx\Util\Collection
  • Gedcomx\Util\Duration
  • Gedcomx\Util\FormalDate
  • Gedcomx\Util\JsonMapper
  • Gedcomx\Util\SimpleDate
  • Gedcomx\Util\XmlMapper
  • Gedcomx\Vocab\VocabElement
  • Gedcomx\Vocab\VocabElementList

Interfaces

  • Gedcomx\Common\Attributable
  • Gedcomx\Common\HasNotes
  • Gedcomx\Conclusion\HasFacts
  • Gedcomx\Extensions\FamilySearch\Rs\Client\FamilyTree\PreferredRelationshipState
  • Gedcomx\Extensions\FamilySearch\Rt\FamilySearchPlatformModelVisitor
  • Gedcomx\GedcomxFile\GedcomxEntryDeserializer
  • Gedcomx\GedcomxFile\GedcomxEntrySerializer
  • Gedcomx\Links\SupportsLinks
  • Gedcomx\Records\HasFields
  • Gedcomx\Rs\Client\Options\StateTransitionOption
  • Gedcomx\Rs\Client\SupportsExtensionElements
  • Gedcomx\Rt\GedcomxModelVisitor
  • Gedcomx\Source\ReferencesSources
  • Gedcomx\Support\HasJsonKey

Exceptions

  • Gedcomx\GedcomxFile\GedcomxFileException
  • Gedcomx\Rs\Client\Exception\GedcomxApplicationException
  • Gedcomx\Rs\Client\Exception\GedcomxInvalidQueryParameter
  • Gedcomx\Rs\Client\Exception\NullValueException
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 
<?php

namespace Gedcomx\Rs\Client\Util;

use Gedcomx\Gedcomx;

/**
 * A model representation of ancestry.
 *
 * Class AncestryTree
 *
 * @package Gedcomx\Rs\Client\Util
 */
class AncestryTree{

    private $ancestry = array();

    /**
     * Constructs a new ancestry tree using the specified model.
     *
     * @param \Gedcomx\Gedcomx $gx
     */
    function __construct(Gedcomx $gx){
        $this->buildArray($gx);
    }

    /**
     * Builds an array of persons to be placed in the ancestry tree.
     *
     * @param \Gedcomx\Gedcomx $gx
     *
     * @return array
     */
    protected function buildArray(Gedcomx $gx){
        $this->ancestry = array();
        if ($gx->getPersons() != null) {
            foreach ($gx->getPersons() as $person) {
                $display = $person->getDisplayExtension();
                if ($display && $display->getAscendancyNumber()) {
                    try {
                        $number = (int)$display->getAscendancyNumber();
                        while (count($this->ancestry) < $number) {
                            array_push($this->ancestry, null);
                        }
                        $this->ancestry[$number - 1] = $person;
                    } catch (NumberFormatException $e) {
                        //fall through...
                    }
                }
            }
        }
        return $this->ancestry;
    }

    /**
     * Gets the root person of the ancestry tree.
     *
     * @return \Gedcomx\Rs\Client\Util\AncestryNode|null
     */
    public function getRoot(){
        return $this->getAncestor(1);
    }

    /**
     * Gets an ancestor from the ancestry tree at the specified index.
     *
     * @param $number
     *
     * @return \Gedcomx\Rs\Client\Util\AncestryNode|null
     */
    public function getAncestor($number){
        if (count($this->ancestry) < $number) {
            return null;
        }
        return new AncestryNode($this, $this->ancestry, $number);
    }
}

/**
 * Represents an ancestor within an ancestry tree.
 *
 * Class AncestryNode
 *
 * @package Gedcomx\Rs\Client\Util
 */
class AncestryNode{

    private $tree = null;
    private $ancestry = null;
    private $number = null;

    /**
     * Constructs a new ancestry node using the specified values.
     *
     * @param $tree
     * @param $ancestry
     * @param $number
     */
    function __construct($tree, $ancestry, $number){
        $this->tree = $tree;
        $this->ancestry = $ancestry;
        $this->number = $number;
    }

    /**
     * Gets the current person this node represents.
     *
     * @return mixed
     */
    public function getPerson(){
        return $this->ancestry[$this->number - 1];
    }

    /**
     * Gets the father of the person represented by this node.
     *
     * @return mixed
     */
    public function getFather(){
        return $this->tree->getAncestor($this->number * 2);
    }

    /**
     * Gets the mother of the person represented by this node.
     *
     * @return mixed
     */
    public function getMother(){
        return $this->tree->getAncestor(($this->number * 2) + 1);
    }
}
gedcomx-php-client API documentation generated by ApiGen