Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .coveralls.yml

This file was deleted.

239 changes: 157 additions & 82 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,83 @@

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [4.4.0] - 2026-08-24

### Added
- **Complete FamilySearch Extensions** - Added all missing extension packages from gedcomx-java repository

- **Ordinances Package** (16 classes)
- `Ordinance` - LDS temple ordinance with full lifecycle support
- `OrdinanceActions` - Available actions (reserve, unreserve, print, etc.)
- `OrdinanceParticipant` - Participant information with sex and living status
- `OrdinanceReservation` - Reservation details with assignee and claim information
- `OrdinanceRollup` - Aggregate ordinance statistics
- `OrdinanceSummary` - Summary of person's ordinance status
- Enums: `OrdinanceType`, `OrdinanceStatus`, `OrdinanceStatusReason`, `OrdinanceRoleType`, `OrdinanceSexType`, `OrdinanceRollupStatus`, `OrdinanceReservationAssigneeType`, `OrdinanceReservationClaimType`
- Full support for baptism, endowment, sealing, and other temple ordinances

- **Places Package** (4 classes)
- `PlaceDescriptionInfo` - Extended place information with geographic hierarchy
- `FeedbackInfo` - User feedback on place descriptions
- `PlaceAttribute` - Place attributes with qualifiers
- `FamilySearchPlaceType` - Enum for place type classifications

- **Names Package** (1 class)
- `NameSearchInfo` - Name search analysis with match scores and alternate spellings

- **Records Package** (3 classes)
- `FieldInfo` - Historical record field metadata
- `AlternateDate` - Alternate date representations
- `AlternatePlaceReference` - Alternate place references

- **Search Package** (1 class)
- `Facet` - Faceted search support with hierarchical facets

- **Vocabularies Package** (5 classes)
- `VocabConcept` - Controlled vocabulary concept
- `VocabConceptAttribute` - Concept attributes
- `VocabConcepts` - Collection of vocabulary concepts
- `VocabTerm` - Vocabulary term with language support
- `VocabTranslation` - Term translations across languages

- **Artifacts Package** (3 classes)
- `ArtifactDisplayState` - Display state for digital artifacts
- `ArtifactScreeningState` - Screening state and review status
- `ArtifactAccessPermission` - Access permission management

- **Users Package** (1 class)
- `AgentName` - Extended agent name with given/surname support

### Changed
- Updated `FamilySearchPlatformModelVisitor` and `FamilySearchPlatformModelVisitorBase` to support all new extension classes
- Enhanced `HypermediaEnabledData` with additional link support
- Added `alternateCalendarDates` support to `Date` class in conclusion models

### Documentation
- Created comprehensive [FAMILYSEARCH_EXTENSIONS.md](docs/FAMILYSEARCH_EXTENSIONS.md) covering all extension packages
- Added detailed usage examples for ordinances, places, names, records, search, vocabularies, artifacts, and users
- Moved documentation into `docs/` folder for better organization
- Renamed and cleaned up existing documentation files

### Testing
- Added comprehensive test coverage for all new packages:
- `OrdinancesTests.php` (266 lines) - Full ordinance lifecycle testing
- `PlacesTests.php` (120 lines) - Place descriptions and feedback
- `NamesTests.php` (99 lines) - Name search functionality
- `RecordsTests.php` (166 lines) - Field info and alternate references
- `SearchTests.php` (182 lines) - Faceted search testing
- `VocabTests.php` (259 lines) - Vocabulary concepts and translations
- `ArtifactsEnumsTests.php` (143 lines) - Artifact states and permissions
- `UsersAgentNameTests.php` (158 lines) - Agent name handling
- Created `composer test` script for easier test execution
- All tests include JSON/XML serialization validation

### Technical Details
- Full parity with gedcomx-java FamilySearch extensions
- All classes support JSON and XML serialization/deserialization
- Backward compatible - no breaking changes to existing code
- Added ~9,255 lines of production code across 35 new files
- Added ~1,400 lines of test code

## [4.3.0] - 2026-06-30

Expand All @@ -13,7 +88,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support for parent1, parent2, and children (ResourceReference arrays)
- JSON and XML serialization/deserialization
- Single-parent family support
- See [docs/NEW_FEATURES_GUIDE.md](docs/NEW_FEATURES_GUIDE.md) for usage examples

- **Multi-calendar support** for dates
- `CalendarType` enum with 5 calendar systems:
Expand All @@ -25,7 +99,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `calendar` property on `DateInfo` class
- `alternateCalendarDates` property for representing dates in multiple calendars
- Support for nested DateInfo objects in alternate calendar arrays
- See [docs/NEW_FEATURES_GUIDE.md](docs/NEW_FEATURES_GUIDE.md) for calendar conversion examples

- **Date confidence levels**
- `confidence` property on `DateInfo` class
Expand All @@ -44,12 +117,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Integration tests with Person, Fact, and Event
- Edge case testing (null handling, empty arrays, nested objects)

- **Documentation**
- [docs/NEW_FEATURES_GUIDE.md](docs/NEW_FEATURES_GUIDE.md) - Complete feature guide with examples
- [docs/QUICK_START.md](docs/QUICK_START.md) - Quick start guide for new features
- [SERIALIZATION_VERIFICATION.md](SERIALIZATION_VERIFICATION.md) - Serialization verification report
- [TEST_COVERAGE_SUMMARY.md](TEST_COVERAGE_SUMMARY.md) - Test coverage documentation

### Changed
- Updated `DateInfo` class with three new properties (backward compatible)
- Updated README.md to highlight new features
Expand All @@ -62,12 +129,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- 114 total tests passing (98 existing + 16 new)
- 325 total assertions

### Migration Notes
- No code changes required for existing implementations
- New properties are optional and default to null
- See [docs/NEW_FEATURES_GUIDE.md#migration-guide](docs/NEW_FEATURES_GUIDE.md#migration-guide) for upgrade guidance

## [Unreleased]
## [4.1.0] - 2026-04-20

### Added
- PHP version requirement: `>=7.4` now specified in composer.json
Expand Down Expand Up @@ -124,69 +186,82 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Affects `GedcomxFileTests::testXMLSerialization`
- Tests still pass but emit warnings

### Testing
Verified compatibility across multiple PHP versions:
- ✅ PHP 8.1.34 - 6 tests, 23 assertions - PASSED
- ✅ PHP 8.2.30 - 6 tests, 23 assertions - PASSED
- ✅ PHP 8.3.30 - 6 tests, 23 assertions - PASSED
- ✅ PHP 8.4.20 - 6 tests, 23 assertions - PASSED
- ✅ PHP 8.5.5 - 6 tests, 23 assertions - PASSED

**Automated CI Testing** (GitHub Actions):
Continuous integration tests run automatically on PHP 7.4, 8.0, 8.1, 8.2, and 8.3 to prevent regressions.

Note: PHP 7.4 and 8.0 are end-of-life. While CI tests these versions for compatibility verification, production use of PHP 8.1+ is recommended for security updates.

### Migration Guide

#### For Library Users
If you're using gedcomx-php as a dependency:

1. **Update your PHP version**:
```bash
php --version # Must be 7.4 or higher
```

2. **Update the package**:
```bash
composer update gedcomx/gedcomx-php
```

3. **No code changes required** - The API remains unchanged

#### For Contributors/Developers

1. **Update PHP if needed**:
```bash
php --version # Recommended: 8.1+
```

2. **Install dependencies**:
```bash
rm -rf vendor composer.lock
composer install
```

3. **Run tests**:
```bash
vendor/bin/phpunit
```

4. **Update test classes if extending ApiTestCase**:
```php
// Old (PHPUnit 3.7)
class MyTest extends \PHPUnit_Framework_TestCase {
public function setUp() { }
}

// New (PHPUnit 9+)
class MyTest extends \PHPUnit\Framework\TestCase {
protected function setUp(): void { }
}
```

### Known Issues
- PHP 8.1+ emits deprecation notices about return type declarations in `Gedcomx\Util\Collection`
- These are warnings, not errors
- Tests pass successfully
- Will be addressed in a future update
## [3.1.0]

### Changed
- Migrate from Travis CI to GitHub Actions
- Add multi-version PHP testing (7.4, 8.0, 8.1, 8.2, 8.3)
- Update CI/CD pipeline with automated testing and coverage reporting
- Update README badges to reflect GitHub Actions status
- Added CHANGELOG.md for a more extensive overview on changes

## [3.0.0]

### Changed
- **BREAKING**: Split out the API networking code into [gedcomx-php-client](https://github.com/FamilySearch/gedcomx-php-client)
- This library now focuses solely on serialization/deserialization
- API client functionality moved to separate package

## [2.3.0]

### Added
- Add the `generateClientSecret()` method to `GedcomxApplicationState`

## [2.2.0]

### Added
- Add `logout()` method to application states

## [2.1.1]

### Added
- Support throttling. Enable in `FamilySearchClient` by setting the `throttling` option to `true`

## [2.0.1]

### Fixed
- Fix `FamilySearchClient` so that it automatically follows redirects

## [2.0.0]

### Changed
- **BREAKING**: Upgrade to Guzzle 6 which makes PHP 5.5 the minimum supported version
- `$state->getRequest()` returns a `GuzzleHttp\Psr7\Request`
- `$state->getResponse()` returns a `GuzzleHttp\Psr7\Response`

### Added
- Add a new `httpExceptions` configuration parameter on `FamilySearchClient` that causes an exception to be thrown when a 4xx or 5xx response is received from the API

## [1.2.0]

### Added
- Add a custom user agent string when using the FamilySearchClient
- Register a [PSR-3](http://www.php-fig.org/psr/psr-3/) logger when using the FamilySearchClient
- Add a `setAccessToken()` method to the FamilySearchClient class
- Add `getPerson()` method to the PersonsState
- Add `getStatus()` method to the FamilySearchClient class

### Changed
- Change PersonParentsState, PersonSpousesState, and PersonChildrenState to extend PersonsState

## [1.1.1]

### Fixed
- Fix bugs in the FamilySearchClient class

## [1.1.0]

### Added
- Introduce the FamilySearchClient
- Improve runtime of automated tests with php-vcr

### Changed
- Fix automated tests

### Removed
- Remove apache/log4php dependency

## [1.0.0]

### Added
- Initial stable build to enable Composer installation by version number
71 changes: 17 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# GedcomX - PHP SDK

[![Packagist](https://img.shields.io/packagist/v/gedcomx/gedcomx-php.svg)](https://packagist.org/packages/gedcomx/gedcomx-php)
[![CI](https://github.com/FamilySearch/gedcomx-php/actions/workflows/ci.yml/badge.svg)](https://github.com/FamilySearch/gedcomx-php/actions/workflows/ci.yml)
[![PHP Version](https://img.shields.io/badge/php-7.4%20%7C%208.0%20%7C%208.1%20%7C%208.2%20%7C%208.3-blue.svg)](https://github.com/FamilySearch/gedcomx-php)
[![Coverage Status](https://coveralls.io/repos/FamilySearch/gedcomx-php/badge.svg?branch=master&service=github)](https://coveralls.io/github/FamilySearch/gedcomx-php?branch=master)

The PHP implementation of [GEDCOM X](http://www.gedcomx.org), including GEDCOM X extension projects.
Expand Down Expand Up @@ -66,15 +66,27 @@ Do **one** of the following steps to activate Composer and install the gedcomx-p

XML and JSON serialization and deserialization of GEDCOM X. For more information, see the [examples](https://github.com/FamilySearch/gedcomx-php/wiki/GEDCOM-X-Serialization).

* **FamilyView for Family Groupings** ✨ NEW in v4.3.0
* **FamilyView for Family Groupings**

Display families with parents and children using the new `FamilyView` class. Perfect for family tree visualizations and pedigree charts.

* **Multi-Calendar Support** ✨ NEW in v4.3.0
* **Multi-Calendar Support**

Represent dates in multiple calendar systems (Gregorian, Julian, Hebrew, Islamic, French Republican) with automatic alternate calendar date support.

For detailed guides and examples, see [NEW_FEATURES_GUIDE.md](docs/NEW_FEATURES_GUIDE.md).
* **FamilySearch Extensions**

Full support for FamilySearch-specific extensions including:
- **LDS Temple Ordinances** - Baptism, endowment, sealing, and other temple ordinances with reservations and participants
- **Places** - Enhanced geographic data, place descriptions, and feedback
- **Names** - Name search analysis and information
- **Records** - Historical record field information and metadata
- **Search** - Faceted search with hierarchical facets
- **Vocabularies** - Controlled vocabulary concepts, terms, and translations
- **Artifacts** - Digital artifact management, display states, and access permissions
- **Users** - Extended user agent information

For detailed documentation and examples, see [FAMILYSEARCH_EXTENSIONS.md](docs/FAMILYSEARCH_EXTENSIONS.md).

## Testing

Expand Down Expand Up @@ -112,53 +124,4 @@ Coverage reports are automatically generated by CI and uploaded to [Coveralls](h

Tests run automatically on every push and pull request via [GitHub Actions](https://github.com/FamilySearch/gedcomx-php/actions). All supported PHP versions are tested in parallel.

For more details on testing, see [TESTING.md](TESTING.md).

## Changelog

* v3.1.0
* Migrate from Travis CI to GitHub Actions
* Add multi-version PHP testing (7.4, 8.0, 8.1, 8.2, 8.3)
* Update CI/CD pipeline with automated testing and coverage reporting
* Update README badges to reflect GitHub Actions status
* Added CHANGELOG.md for a more extensive overview on changes

* v3.0.0
* Split out the API networking code into [gedcomx-php-client](https://github.com/FamilySearch/gedcomx-php-client)

* v2.3.0
* Add the `generateClientSecret()` method to `GedcomxApplicationState`.

* v2.2.0
* Add `logout()` method to application states.

* v2.1.1
* Support throttling. Enable in `FamilySearchClient` by setting the `throttling` option to `true`.

* v2.0.1
* Fix `FamilySearchClient` so that it automatically follows redirects.

* v2.0.0
* Upgrade to Guzzle 6 which makes PHP 5.5 the minimum supported version.
* `$state->getRequest()` returns a `GuzzleHttp\Psr7\Request`
* `$state->getResponse()` returns a `GuzzleHttp\Psr7\Response`
* Add a new `httpExceptions` configuration parameter on `FamilySearchClient` that causes an exception to be thrown when a 4xx or 5xx response is received from the API.

* v1.2.0
* Add a custom user agent string when using the FamilySearchClient.
* Register a [PSR-3](http://www.php-fig.org/psr/psr-3/) logger when using the FamilySearchClient.
* Add a `setAccessToken()` method to the FamilySearchClient class.
* Add `getPerson()` method to the PersonsState. Change PersonParentsState, PersonSpousesState, and PersonChildrenState to extend PersonsState.
* Add `getStatus()` method to the FamilySearchClient class.

* v1.1.1:
* Fix bugs in the FamilySearchClient class

* v1.1.0:
* Introduce the FamilySearchClient
* Fix automated tests
* Improve runtime of automated tests with php-vcr
* Remove apache/log4php dependency

* v1.0.0:
* Initial stable build to enable Composer installation by version number.
For more details on testing, see [TESTING.md](docs/TESTING.md).
Loading
Loading