Repository navigation
Releases: ijeffro/laralocker
Releases · ijeffro/laralocker
Release list
v3.0.0
A rewrite as a plain API connector that works against Learning Locker v2+.
Requirements
- PHP 8.2+ and Laravel 12 or 13. Support for PHP 5.6–8.1 and Laravel 4.2–11 is dropped.
- The HTTP client is now Laravel's own (
illuminate/http). The directguzzlehttp/guzzleandlcobucci/jwtrequirements are gone.
Fixed
- Installs on current Laravel. 1.x was capped at Laravel 6.4 and Guzzle 6, so Composer refused it on Laravel 7 and later.
store(1)followed bystore(2)no longer returns store 1. The facade cached the first resource, and its id, for the rest of the request. Every call now gets a fresh resource.- Learning Locker errors are thrown as
LearningLockerException. Before, Guzzle's exceptions escaped, because theClientExceptionbeing caught was never imported. - The
xAPIfacade works. It relied on anxAPIHandlerclass and a TinCan library that were never shipped. LearningLocker::organisations()exists. It was declared but never defined.- No PHP 8.2+ deprecations from dynamic properties or optional-before-required parameters.
Changed
- Responses are decoded arrays, not JSON strings.
- Errors throw
Ijeffro\Laralocker\Exceptions\LearningLockerException, which carries the status and response. Before, the exception object was returned. - The config is flat:
laralocker.url,laralocker.key,laralocker.secret,laralocker.timeout,laralocker.xapi.*. The.envnames are unchanged. - The service provider is
Ijeffro\Laralocker\LaralockerServiceProvider. Package discovery registers it. xAPI::...->store()is nowsend()and returns the statement id.store()remains as an alias.LearningLocker::statements()->create()throws. Learning Locker refuses it, so usestatements()->send()or thexAPIfacade.
Added
where(),sort(),skip(),limit(),select(),populate(),first(),count()andpaginate()on every resource.personaIdentifiers()(withupsert()),personaAttributes()andpersonaImports().aggregate(),ping(),clientInfo(),about(),connect()andresource().xAPI::statements(),xAPI::statement()andxAPI::more()for reading statements.- A test suite with 100% line coverage, PHPStan level 8 and Pint, all run on GitHub Actions.
- A logo.
Removed
- The package routes and controllers (
LearningLocker::routes()), thelaralocker:setupcommand, the migrations, the models and the database, export, queue and storage config. LaraLocker is now only an API connector. journeys()/journeyProgress(). Journeys are a Learning Locker Enterprise feature. UseLearningLocker::resource('journey')if your install has them.- The
Laralockerfacade, which did nothing.