Repository navigation
Tags
Tags
Fix: a MaxMind database that is missing or cannot be read, or a looku… …p that fails, no longer fails every request that logs a visit (#86) The binding opened the database while the resolver was built, so a missing file threw out of the LogVisits middleware on every request, and nothing caught what a lookup threw. The resolver opens the database at its first lookup now, reports whatever fails but an address the database does not hold and resolves to null, and opens a database that failed to open again at the next lookup, so one put in place later is picked up without a restart. Its constructor takes a closure that opens the reader or the client, as well as the reader or the client itself, as v5.2.0 shipped it. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Feat: a MaxMind GeoIP resolver, which reads a GeoIP2 or GeoLite2 City… … database through geoip2/geoip2 (#85) The maxmind resolver looks a visit's IP up in a City database the application keeps (visitor.maxmind.database, its names in visitor.maxmind.locales), so no request leaves the application, and answers with the payload the stevebauman resolver does. An IP the database does not hold leaves the visit's location empty. The service provider binds the resolver as a singleton over GeoIp2\Database\Reader, so a long-running worker opens the database once rather than for every request's visitor. Binding it again with MaxMind's web service client resolves through that instead. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
feat: show a visit's url decoded, by decoded_url (#83) A visit's url is kept as the request had it, percent-encoded, since decoding it loses what tells an encoded `/`, `&` or `=` apart from a real one. The new read-only `decoded_url` attribute decodes it for showing it, with rawurldecode() so that a `+` is kept, and mb_scrub() so that what is not valid UTF-8 once decoded can still be shown. Closes #32 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
fix: align Agent::__call signature with MobileDetect 4.10 (#77) mobiledetect/mobiledetectlib 4.10.0 added typed parameter and return type declarations to MobileDetect::__call. Agent's untyped override caused a fatal LSP-incompatibility error at class load time on any install resolving 4.10+. Adopt the typed signature on Agent::__call and bump the mobiledetect/mobiledetectlib constraint to ^4.10 so installs pull a compatible parent. Fixes #76
fix: use explicit nullable type for visit() $model (PHP 8.4) (#75) PHP 8.4 deprecates implicitly nullable parameters when the type is non-nullable but the default is null (RFC / migration notes). visit(Model $model = null) triggers: Implicitly marking parameter $model as nullable is deprecated, the explicit nullable type must be used instead. This changes the signature to visit(?Model $model = null), which is equivalent at runtime and removes the deprecation.
PreviousNext