[development] $node namespace woes -- can we fix this in D6?
drupal at dwwright.net
Wed May 30 01:02:08 UTC 2007
i've had a series of bugs in the project* issue queues caused by
the fact that the project* modules use $node->pid just like "pid"
always means in the project* codebase: the project id, or the nid of
the project node that the (release|issue|...) belongs to.
however, book.module thinks $node->pid is the nid of the parent page
in the book hierarchy. :( so, all hell breaks loose when you try to
put a release node into a book outline.
certainly other contribs might use $node->pid to mean all sorts of
things, too, which would conflict with both project* and book.module.
i could always just hack project* to always prefix everything it
tries to stuff into or read from $node with some kind of custom
variable name prefix, like calling this "$node->project_issue_pid"
instead of just "$node->pid".
however, given that the API isn't quite frozen for D6 yet, i'm
wondering if there's anything smarter and better we could do via the
core API, instead of relying on convention and luck to avoid this
1) what's the right way to handle variable namespaces in the $node
object? can/should we change hook_nodeapi('load') to force people to
use a namespace of some kind when populating $node? maybe $node
should be a nested array instead of an object, so that everyone touches:
instead of just:
?? that probably sucks for all sorts of reasons, i'm just quickly
2) presumably this has come up before? anyone have pointers to
relevant old issues or threads? i don't remember seeing anything
like this come up before, but i've been known to miss the occasional
thread on this list. ;)
3) anyone else interested in making a little push to try to do this
4) would the D6 core maintainers be willing to commit a patch if it
materialized and was properly reviewed/tested/RTBC'ed?
 for the interested reader:
More information about the development