[development] tricky drupal_execute() / hook_form_alter() question
Emma Irwin
emma.irwin at gmail.com
Sat Jul 30 00:57:07 UTC 2011
I've used node_save without having to worry about defaults for irrelevant fields. Worked fine for CCK for me
Personally, I think that your alternate solution & function goes too far into a zone of complexity that you'll have more bugs as a result. I would also feel for any developer that comes after you and has to maintain that code :/
Sent from my iPhone
On Jul 29, 2011, at 12:21 PM, "David Cohen" <drupal at dave-cohen.com> wrote:
> I'm trying import some data from a user's Facebook profile into Drupal.
> The site in question has a lot of moving parts: Content Profile, CCK,
> Drupal for Facebook.
>
> I'd like to query facebook for info about the user, then create or
> update a node with the data. The node contains a lot of fields, and I'm
> only interested in updating 1 or 2 (or 3 or 4) of them.
>
> My preference is to use drupal_execute() to create/update the profile
> node. To do this, I have to fill out a $form_state['values'] array.
> I've tested this and noticed that if I leave out the values for any
> field in the node, that field will be reset to blank. In other words my
> code needs to fill out values for all fields. But to do so essentially
> prevents anyone from adding more fields via CCK. The code would need to
> be updated for every change to the content type, which is too onerous.
>
> There are posts on drupal.org describing this same problem, and
> suggesting using node_save() instead of drupal_execute() for this
> purpose. What do the experts on this list recommend, drupal_execute()
> or node_save()?
>
> I had the thought that during hook_form_alter(), I could scan the form
> for all #default_values, and use them to populate the
> $form_state['values']. A function able to do that would, it seems to
> me, make drupal_execute() much easier to use. That code would have to
> navigate the entire $form tree (at least all element children). And
> would have to be smart about where #tree is true in order to get all the
> #default_values into the right $form_state['values']. Has anyone
> attempted such a thing?
>
> Thanks in advance, -Dave
More information about the development
mailing list