I uploaded the first version of the relations module to the Bryght svn repository. I intend to use it for easier management and brainstorming. When the module is considered alpha quality it will get into drupal's contrib cvs, maybe earlier. I don't want to pollute it earlier than nessesary.
The bulk of the sql query generation has been done. An initial working version of the url parser, implemention a simple relation definition language parser has been done.
There are a few things, which need to be done in order for the api to be properly usable. The main show-stoppers are the relation nodeapi and themeing of the output. I haven't done anything on the nodeapi side, since I'm not sure about the UI. Needs experimenting. For the themeing, I need to think through themeing based on the field meta-data. Thes goes dangerously into the cck teritory. If anyone has any ideas, please come up and shout.
Below You can see the current version of the battle plan. I will be changing it with time.
--------------------------------------------------------- relations url parser --------------------------------------------------------- to be used for testing and on the fly list generation, combined with url aliasing this gives an enourmous flexi- bility to the web developer and site-admin --------------------------------------------------------- 1 + sub relations 1 + where conditions 1 + eq 1 + gt 1 + lt 1 + and 1 + or 1 + output fields filter 1 - group 1 - order 2 - theme profiles 3 - range --------------------------------------------------------- relations query builder --------------------------------------------------------- the heart of the relations api. Resposible to generate the SQL queries from query signatures. Should support operations between different relateions - like union, intesection, .... --------------------------------------------------------- 1 + WHERE 1 + FROM 1 + FIELDS 1 + fields filter 1 + GROUP 1 + ORDER 4 - JOIN 3 - INSERT 3 - UPDATE 3 - DELETE 1 + SELECT 3 - LIMIT (ranges) 4 - stored procedures 4 - views 3 - syntax errors && warnings --------------------------------------------------------- relations nodeapi --------------------------------------------------------- Relation persistance is planned to be implemented via nodeapi. This way we get documentation of the relations as well as signatures, etc... The leaf realtions will use the same mechanism. The difference will be in passing the attached object (node, user, ...) to the relation as parameter. --------------------------------------------------------- 1 - add relation 1 - remove 1 - update 2 - caching 2 - SQL 2 - php 2 - relation signature constructor 2 - parameter --------------------------------------------------------- specialised relations (indexes, structures) --------------------------------------------------------- these are specialised hardcoded relations. The intent is for them to provide more efficient handling of the data, as well as additional predicates/functions --------------------------------------------------------- 3 - hierarchies 4 - extended (deep) graphs --------------------------------------------------------- default themes --------------------------------------------------------- we will require meta-data based resolution for displaying the relations. This should be done based on context. This is the place to proveide mappings for other formats as RSS, ATOM,RDF, OWL, OPML, DC, as well as various associated microformats. --------------------------------------------------------- 2 - some basic theming 3 - meta-data based theming - design and implementation 3 - microformats - technorati tags, whatever is appropriate 3 - RSS 1.0 mapping 3 - RSS 2.0 mapping 3 - ATOM mapping 3 - OPML 3 - DC mapping 3 - RDF mapping 4 - OWL mapping
if you want to keep track of the realtions progress and my posts on the topic you can subscribe to the relations feed