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.
(Nothing yet)
- Added support for setting a custom entry point URL, so it's possible to connect to the API through a proxy.
- Added support for adding custom request headers.
- Switched from passing the apikey in query string to authorization header.
- Added new options
maxAttemptsOnServerError
andsleepTimeOnServerError
.
- Updated the Laravel Service Provider to use existing PSR-17/18 interface bindings, if any.
- Fixed generator introduced in 0.9.0.
- Breaking change: The Analytics Report iterator was changed to a generator to reduce memory usage when iterating over large reports. Results are now thrown away after they have been yieleded. This is a breaking change since count() is no longer supported.
- Fix for revertion of namespace removal in Alma Analytics API response (seems like the removal was just a mistake from Ex Libris)
- Made the
Client::buildUrl
method public.
- URL encode user IDs in URLs (since Alma user IDs can contain any Unicode character).
- Added extra type check in error response handling
- Docs: Fix "Item by barcode" anchor (#14)
- Fix for sudden namespace removal in Alma Analytics API response
0.8.0 - 2019-04-08
- Add portfolios and representations to Bib objects.
- Update scriptotek/marc to version 2.0. Please see the corresponding CHANGELOG for information about changes that might break your app if you work with MARC records.
- Update from HTTPlug to PSR-17/PSR-18 HTTP discovery.
Note that a HTTP factory implementation is now required.
Run
composer require http-interop/http-factory-guzzle
to add a HTTP Factory for Guzzle. - Require PHP >= 7.1.
- Set MMS id on Bib object when initiated from SRU response.
- Handle more error responses.
0.7.2 - 2018-11-09
- Added methods for retrieving task lists (lending requests and requested resources).
- Fixed retrieval of Holding records: #9
0.7.1 - 2018-10-23
- Fixed infinite loop in
Users::search()
when search result only contained contacts.
0.7.0 - 2018-09-02
- Added options
limit
andphrase
toUsers::search()
. - Added methods
getBarcodes()
andgetUniversityIds()
toUserIdentifiers
to get all active values. These are accessible on theUser
object as$user->barcodes
and$user->universityIds
. - Added method
Client::items->fromBarcode(...)
- Added method
Item::checkOut()
,Item::loan()
,Item:scanIn()
andUser::loans
- Added method
exists()
toBib
,Holding
,Item
,User
. If trying to get data from a non-existing resource,Scriptotek\Facade\Exception\ResourceNotFound
is thrown. - Added array access to
Bibs
andHoldings
. - Expanded the exception tree:
ClientException
for all Facade Client errorsRequestFailed
(new) for 4xx errors.$e->getMessage()
returns the error message from the server.InvalidApiKey
(new)ResourceNotFound
(new) when a request resource was not found.InvalidQuery
(new) when the query was not understood by the server. Currently only used by the users api.
- Added interface to get libraries (
$client->libraries
) and locations ($client->libraries[$libraryCode]->locations
). - Added item checkout and scan-in.
- Analytics: The
getRows()
method is deprecated. Iterate over theReport
instead. - Made package auto-discoverable in Laravel 5.5+.
- Added helper method
Users::findOne()
to get the first match from a search. - Added support for retrieving user requests from
Bib
,Item
andUser
.
- BC: Changed the signature of
Users::search()
. Changeusers->search($query, $full, $batchSize)
tousers->search($query, ['expand' => $full, 'batchSize' => $batchSize])
. - All exceptions now extend
Scriptotek\Facade\Exception\ClientException
. - BC: Moved the user identifier logic from the
User
class to a newUserIdentifiers
class. The$user->barcode
and$user->universityId
magic properties work as before, but$user->getBarcode()
,$user->getUniversityId()
,$user->getIdOfType(...)
and$user->getIds()
must now be called as$user->identifiers->getBarcode()
,$user->identifiers->getUniversityId()
,$user->identifiers->firstOfType(...)
and$user->identifiers->all()
. All methods now return only identifiers with status 'ACTIVE' by default. Removed the$user->hasFullRecord()
method. - Replaced/split the
ResourceList
base model intoModel
,LazyResource
andLazyResourceList
. - Removed the
Bib::getXml()
method in favour of a standardizedgetData()
method part of the newModel
base model. - Removed
$client->bibs->getHolding($mmsId, $holdingId)
, please use$client->bibs[$mmsId]->holdings[$holdingId]
instead. It's lazy-loaded, so there's no performance drawback of the new interface. - Analytics reports: Parses the new
saw-sql:columnHeading
attributes so that columns can be accessed by name. - The
post()
andput()
methods onClient
now returns the response body.
- Ignore users without primary id in
Users::search()
. Previously, these that would crash the response handler.
0.6.1 - 2017-07-02
tbd.