All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- AJAX-Api for SongArrangement comment (notes) (PR187)
- Replace AJAX-Api with REST-API for Group and SongArrangement comments (notes) (PR216)
- Retrieve GroupTypes (PR188, PR198)
- Retrieve GroupTypeRoles (PR197)
- Added new property 'postsEnabled' to the group type model (PR204)
- Login with Session Cookie (undocumented) (PR207)
- Add PHP coding styling (PR193)
- PHPUnit and PHP8.1 compatibility (PR181)
- Use children endpoint for GroupHierarchie (PR192)
- Fix action dependency issue (PR195)
- Fix gitignore (PR213)
- Fix GroupHierarchie test, Fix DB-Fields test (PR192, PR194)
- Fix breaking changes Event-API (PR196)
- Issue search for person (PR210)
New Requests:
- Get config request
ConfigRequest:getConfig()
(PR175) - Get SongStatistic
SongStatisticRequest::all()
(PR140, PR164) - Song-Tags (
$song->requestTags()
) and Group-Tags ($group->requestTags()
) (PR168) - Get CombinedAppointment consisting of appointment, booking and event (PR174)
New Properties:
- Add Address-Property on Appointment (PR137)
- Group-member-fields and DBFields-API (PR147)
- All date properties get DateTime-Getter (
$vaccationAbsence->getEndDateAsDateTime()
) (PR167) - Appointment property for calculated and base StartDate/EndDate (PR177)
- Add ImageUrlBanner to GroupInformation data (PR136)
- Add Image-Property to Appointment (PR174)
Configuration:
- Add HTTP-Log to log http request data (PR137)
- Pagination Page-Size Option
CTConfig::setPaginationPageSize(400)
(PR163) - CTSession to handle multiple ct-instances and login-tokens (PR170)
Authentication:
- Add multi-factor authentication support (PR146)
Breaking Changes:
-
Refactor Imports to follow PSR-4 (PR165)
-
Reorganize Codebase (PR173)
-
Authenticate CT-API-Client with cookie session instead of sending api-key in every request. (PR142)
-
Authenticate with UserId and LoginToken (PR155, PR156, PR157)
Intern Changes:
- Add integration-test that interact with a reallife churchtools instance (PR143, PR144, PR149, PR153)
- Update Dependencies (PR154)
- Update tested CT-Version in Docs (PR178, PR159)
- Replace Psalm PHP with PHP-Stan (PR166)
- Upgrade Monolog to v3 (PR171)
- Upgrade required PHP version from 8.0 to 8.1 (PR171)
For version 2 we refactor the complete code base to provide a better overview and split the code in the diffrent churchtools parts (groups, events, calendars, bookings). To migrate your from version 1 to 2 please check out this upgrade guide:
Reorganizce Coadebase and refactor imports (PR173, PR165)
Please update the imports in your code for each Request and Model. You can make use of your IDE's intellisense or refer to the documentation to find the correct namespaces.
Upgrade PHP Version to 8.1 and dump support for 8.0 (PR171)
With security support for PHP 8.0 set to expire on November 26, the focus will shift away from 8.0 in favor of embracing new language features in PHP 8.1. You can find more information about supported PHP versions at https://www.php.net/supported-versions.php.
Update your PHP Version on your system and reinstall the composer dependencies.
Changed Authentication of CT-Client (PR142)
The authentication method for the churchtools API has been updated. Previously, the API-token was included in every request. Now, authentication will be based on the provided cookie session, which will significantly improve request speed. To be up to date with the authentication methods please check out the documentation. As a result of this change, the Config API has also been modified:
CTConfig::validateApiKey()
is replaced withCTConfig::validateAuthentication()
CTConfig::authWithLoginToken($userId, $loginToken)
now only needs loginToken as parameter, because userId is not required:CTConfig::authWithLoginToken($loginToken)
.AuthRequest::retrieveApiToken()
now needs the userId as parameter.
Upgrade Monolog to v3 (PR171)
We upgraded monolog to v3 to be compatible with Laravel 10. There is now action required.
Ugrade Guzzle from 7.4 to 7.7 (PR154)
No action required.
Special thanks to the dedicated contributors who are the driving force behind this project, advancing it, enhancing its quality, and introducing new features.
- @stollr enhanced the person-api and implemented the capability to update data in churchtools and create new persons.
- @devdot upgraded Monolog to ensure compatibility with Laravel 10.
- @a-schild provided valuable input for the appointment API, included the configuration request, and introduced the CombinedAppointment request.
- @BiKi05 provided the inspiration for the song-statistic API and the DateTime cast.
- @piridium implemented a security fix.
- @castilma proposed documentation for handling exceptions.
- Request Ajax-Api (AjaxApi-Trait)
- Update Song-Arrangement (PR121)
- Update Song (PR122)
- Update GroupMembers (PR124)
- CCLI-Request Lyrics and Chordsheet (PR127, PR131)
- Extended exception handling of invalid or empty email addresses passed to the person API (PR125)
- Group-Meetings Request (PR130)
- Sending API key as HTTP header instead of query param in FileRequestBuilder (PR126)
- Update ChurchTools from 3.90.0 to 3.91.1 (PR129)
- Improved the formatting of ChurchTool's error response (PR132)
- Breaking-Change: Wrap Song-Lyrics with Model (PR133)
- Create, update and delete person (PR84, PR88, PR91, PR105, PR107, PR93, PR100, PR109)
- New API-Requests
- Serialize Models to Data-Array for JSON-Export (PR103)
- Refactor: Move generated Doc-Files to out-Folder (PR89)
- Refactor: Cache Api-key over multiple Integration-Tests (PR113)
- Refactor FillWithData: Cast types (PR101)
- Refactor CTClient: transform inheritance from GuzzleClient to composition-relation (PR83)
- Refactor: Create Abstract Model to cast id (PR118)
- Fix: Status-Code handling and Exception-handling (PR99)
- Fix: Use Query-Parameters for Where-Clause (PR106)
- Cross-domain cookie leakage in Guzzle - SecurityFix
- Manual Pagination
- refactor DocGenerator: move PHP-Code to Unit-Tests.
- Fix security issue: Improper Input Validation in guzzlehttp/psr7
- add TargetGroup, GroupPlace to Group-Information
- generate Registration-Link in PublicGroup
- Group-Hierarchie: add Group-Hierachie-API to request Parents and Children of Groups.
- Public Group: add Public-Group-API
- Group: add Group-API
- Event-Calendar: add Calendar-Attribut for Event
- Wiki-Files: request Files from Wiki-Page
- Static code analysis tool: add Psalm as static code analysis tool
- Refactoring:
- DocGeneration
- Error Handling: reorganize CTExceptions
-
CTConfig: add Cache mechanism
-
Models:
- Service / ServiceGroup - Models
- EventService to retrieve the Services of an Event
- WikiCategory / WikiPage / WikiSearchResult
- Process WikiPages to Tree
-
Requests:
- Models:
- Person: add requestEvents-Method to retrieve upcoming events for person
- File:
requestFirstLink($url)
filters in the attribute fileUrl not in attribute name code
- CTConfig: set & validate API-Token
- Models:
- process the meta-information of models (creator, editor)
- File/Link:
- Models: Refactor
requestXYZ
-Methods