[drupal-devel] Users self-publishing their content

John VanDyk jvandyk at iastate.edu
Wed Aug 17 22:49:19 UTC 2005

>PS: my understanding is workflow.module is in flux right now, with
>issues with revisions. So I'd guess it won't be ready until post-4.7,
>but of course I need this sooner - like a week or two.

Workflow should do you what you want with the following patch to 
preserve revisions


provided you understand the issues. The nodeapi calls for nodes go like this:

1. nodeapi validate hook
2. (node is saved)
3. nodeapi insert/update hook
    a... modules respond
    b... modules respond
    c... modules respond
    workflow modules responds, fires actions, the last of which saves 
the node (go to 2)
    x... modules respond
    y... modules respond
    z... modules respond

As you can see, we have some problems. Because module_invoke() works 
alphabetically, any modules with names alphabetically after 
"workflow" have not yet responded when the workflow hook is invoked. 
Remember, the workflow hook activity looks like this:

1. nodeapi insert/update is caught by workflow module
2. workflow module fires the 'transition pre' workflow hook to let 
modules know a transition is about to occur
3. modules have a chance to veto the workflow transition
4. if no module vetoes the transition, the 'transition post' workflow 
hook is fired so modules can respond to the workflow state change.

So to move ahead, we need a 1a nodeapi hook that says, "validation 
passed and this node will now be saved" so workflow changes can 
happen there, and/or a 4 nodeapi hook that says, "the node has been 
saved, all modules have done their thing, it's safe to do a node_load 
and get a node that is in a consistent state".

I'd like to see both because it gives maximum flexibility for 
workflow. For example, it's much more efficient to change the status 
of the node to published after validation but before saving than it 
is to use the current method of saving the node again.

More information about the drupal-devel mailing list