At Liip, employees can propose open source projects they want Liip to support. Together with Daniel Barsotti, I did this for the PHP Content Repository implementation Jackalope and Liip was so nice as to grant us a couple of man-weeks to implement stuff for Jackalope. Now that we used up the allocated budget, its time for a progress report what Jackalope can now do.

I don't want to claim all the progress as being me and Dan. Some of the improvements also come out of projects, or of discussions. See the github site for full credits.

  • Binaries: Binary handling is cleaned up and all tests around binaries succeed. We dropped the BinaryInterface but Johannes built a StreamWrapper so we can still delay loading streams from the backend in case you don't read a stream.
  • Register namespaces is now working. Unregister is not supported by jackrabbit remoting.
  • getReferences is implemented to get all properties that reference a node.
  • getPrimaryNode is implemented to get the default child node where the node type defines one.
  • Code architecture is now documented
  • TransportInterface is updated to contain all methods used by Jackalope. Another round of improvements yet to be done.
  • A PHPCR tutorial with some code samples was created. Read the PHPCR tutorial here.
  • Test refactoring: The PHPCR api tests now also live under tests/ and can be run together with the unit tests to check everything at the same time. The PHPCR api tests where refactored to be truely reusable by other projects, and to be nicely configureable for features not yet implemented.
  • Session::refresh reloads the data from the backend, Session::logout terminates a session, Session::hasPermission can give some reasonable information. We can export the repository data in the JCR system view and document view. Mixin types are correctly handled. Improved updating properties.

We also tried to clean up the phpdoc but this ended in a quest for choosing the right tool ā€“ see Phpdoc compilers and inheritdoc. There will be a follow up on that one, i promise ;-)

Of course, there is always a lot that could be done. Get in contact if you want to work on some of the issues.