Towards a v1.0.0 release.
I would like to release a v1.0.0 version of this library, as it has been getting many 0.x.0 releases and I haven't really defined what a 1.0.0 type of release would need. The main things I think need to happen are:
- Drop support for EOL versions of PHP. The older versions of this library will have to suffice for those that need it. This would effectively bump the library to PHP 7.4.
- Add a more fluent search builder class. This would mostly be a wrapper around the existing LdapClient with some additional convenience. Currently, building up some searches can still be awkward in code with the methods currently provided.
- Support client-side RFC4533. This seems largely OpenLDAP specific for directory synchronization. This library already supports a client for AD specific directory synchronization, so adding this would be good to even it out.
TODO
- [x] Bump the PHP version to 8.1.
- [x] Add proper types, return types, and use strict_types throughout the codebase.
- [x] Use Options objects instead of arrays for the
LdapClientandLdapServer.- [ ] Verify client-side referral chasing works as expected after the options changes.
- [x] Update documentation related to options.
- [ ] Add a more fluid search builder.
- [x] Support client-side RFC4533 for interacting with directory synchronization.
- [ ] Verify the
polllogic is implemented properly for content updates. Needs integration tests.
- [ ] Verify the
- [x] Support faster search result processing via anonymous functions instead of waiting for a complete result set to be returned.
- [x] Update documentation to demonstrate this new usage in searching.
- [x] Support canceling sync / search requests in the client.
- [ ] Add an upgrade guide for changes:
- [x] Options changes from array to objects.
- [x] Server request handlers only support object instances now.
- [ ] Server request handlers for searching must return a
SearchResultobject. - [x] Making a server proxy instance uses options objects now.
implement a complete server?
implement a complete server?
It will likely continue to be a limited server component, unfortunately. Though I would like to add support for server side sorting, maybe some other controls
The big issue with a complete server is the backend storage implementation, which I'm not super familiar with in general.
The big issue with a complete server is the backend storage implementation, which I'm not super familiar with in general.
OpenLDAP has a few "backends" - such as MDB - which is just a in-memory storage, BDB which is a simple embedded database a bit like sqlite, but to be honest as a proof-of-concept in native php it doesn't need to be fast/quick/good, so it could just as easily be a big in-ram object/array/list-of-lists kinda thing, optionally persisted-to-disk [or database] using serialize() / unserialize() as a first try. It could alternatively just be stored on-disk as one or more json file/s or something.
ref: https://www.openldap.org/doc/admin24/backends.html
I want to finish up the outstanding work for a final release here. However, it might not happen until closer towards the end of the year. I'm currently looking for a job and that is taking priority over this for the time being.
Job search is complete...but now the opposite problem is all my time being taken up by work 😢 Still hope to complete this one way or another.