rusticisoftware/tincan
PHP library for implementing the Experience API (Tin Can/xAPI). Provides tools to build and send statements, integrate with an LRS, and work with xAPI data. Install via Composer, includes PHPUnit tests and phpDocumentor docs generation.
If-None-Match: * headers for Agent and Activity profile requests. (credit @garemoko) fixes #104tl;dr Other than specific uses of Score or specific features of 5.4 the public interface has not changed.
Score object act more inline with intention of specification, particularly around the use of the scaled property. (See https://github.com/RusticiSoftware/TinCanPHP/commit/dbd8b3f24041683276598bfdc9fbdeed2e3920e0)und as language key in LanguageMap for when a language is not matched but it is present.The reason for the major version bump is that PHP 7 changes handling of return value for empty string or null arguments to json_decode which affects the public interface of the FromJSONTrait implementation. 5.4 can be supported by recognizing this fact and either removing the call to json_last_error_msg() in JSONParseErrorException or by stubbing in a replacement for it (probably based on the one in the PHP docs), having said that PHP 5.4 is EOLd by the core team so there is no reason to maintain support for it going forward, and because we try to minimize major version bumps and maintain backwards compatibility it makes sense to drop EOLd versions at those major version bump points. The JSONParseErrorException is wholly unnecessary to get to support of PHP 7, but because we were breaking compatibility of that interface anyways it makes sense as an implementation wrapper around the more generic InvalidArgumentException.
PHP 5.5 is EOLd as of 21 Jul 2016 (see http://php.net/eol.php) but still has enough installed user base at this time that we'll continue to support it within the 1.x series. Expect support to be removed from the next major version of TinCanPHP. (Where "support" means we'll stop testing and trying to maintain backwards compatibility, but we won't intentionally be trying to break it.)
Fixes made while improving test coverage (credit @WillSkates)
Map and StateRemoteLRS.retrieveActivitySignatureComparisonTraitUtil.getTimestamp to return UTC timestamps (credit @lewyckoff) fixes #64RemoteLRS.queryStatements fixes #26RemoteLRS as well as ability to set "default" headers to be included in all requests, fixes #68RemoteLRS.sendRequest fixes #62Note: the first bullet point above could be considered a backwards incompatible change if you are counting on the library to return timestamps in a particular timezone. In general this would be to store statements using a specific timezone, however you should probably reconsider counting on that based on what the LRS is allowed to do. If you were using the library to get timestamps for another purpose and need them in a specific timezone you'll want to re-examine your use case or your code.
Person object support) (by @garemoko)asVersion for empty arrays and valuessetId on a Statement when value passed fails UUID regex match (includes unit test)First public release, which is a stretch to call production worthy, but I'm satisfied enough with the effort that it should be usable without introduction of severe backwards compatibility hassles.
Fix for namespace map in autoload.
Adjustment to get composer autoload.
Just some cleanup to make it more-PHP like.
How can I help you explore Laravel packages today?