notice: Undefined property: stdClass::$format in drupal-6.x-dev\modules\node\node.module on line 1037.

when node does not have a body field then the node preview shows a PHP notice

repro:
1. clean install
2. admin/content/node-type/page clear the "Body field label" and save
3. node/add/page fill Title with anything and click preview

Comments

webmasterkai’s picture

Any word on this?

qutoz’s picture

Hi,
After making some researches and diving inside Drupal code, I got some ideas about what is happening there:

1- admin/content/node-type/page : clear the "Body field label" and save
2- node/add/page : "Input format" fieldset removed automatically, because it has nothing to do in case of "Body" field not there.
3- "Input format" fieldset contains 2 radio buttons (the name of radio group is "format").
4- When you click "Preview", actually the form is submitted, so the form values should be stored inside $form_state['values'] variable as array.
5- $form and $form_state variables are passed to node_form_build_preview function (in node.pages.inc), which passes them to node_form_submit_build_node function to build $node object, which passes them to node_submit function (defined in node.module), at this point exactly $node object is built and created with properties, according to those posted by the form, so it may or may not contain the "format" property.
6- After that, $node object is passed to series of functions, till it reaches "node_view" function (in node.module), where the error is happening due to line 1037:

  $node->body = check_markup($node->body, $node->format, FALSE);

where the $node->format does not exist.

Note: This is not happening in case of viewing the content type after submission, because $node object is loaded with "format" property by default.

Currently I have 3 suggestions

1- In case that there's no "Body field", Drupal should keep the "Input format" fieldset with its radio buttons.
2- Building $node object in a way that it always contains "format" property.
3- Preventing the submission of content type without "Body field" :)

If anyone of these suggestions, or even any other suggestions, is OK, I want to make the patch myself, if it is OK with you guys :)

pasqualle’s picture

1. no - I don't need a format when I do not need the body
2. yes
3. no - I need a content type without body

qutoz’s picture

StatusFileSize
new483 bytes

Hi,
Sorry for being late I just want to be sure that there are no new suggestions or comments.
Please take care that I added a new part in bold to my first comment.
So here is the patch and thanks for your patience.

swentel’s picture

Version: 6.x-dev » 7.x-dev
Status: Active » Needs review
StatusFileSize
new728 bytes

Can confirm this, this is also present in D7, so changing version. Patch in #4 fixes D6 branch, attached in #5 is for drupal head.

qutoz’s picture

Thanks swentel for your attention. :)

swentel’s picture

StatusFileSize
new677 bytes

Chasing HEAD

swentel’s picture

Issue tags: +Quick fix

Tagging & bumping.

damien tournoud’s picture

Status: Needs review » Needs work
Issue tags: -Quick fix

A new argument for my "put body and format in a same element".

Format is an integer, this should be $node->format = 0;.

swentel’s picture

Status: Needs work » Needs review
StatusFileSize
new750 bytes
catch’s picture

Status: Needs review » Reviewed & tested by the community

Looks good the input format changes will likely change how this works anyway (and with tests), so RTBC.

webchick’s picture

Version: 7.x-dev » 6.x-dev
Issue tags: +Quick fix

Committed, thanks!

Moving down to 6.x.

gábor hojtsy’s picture

Status: Reviewed & tested by the community » Fixed

Thanks, committed to Drupal 6 as well.

Status: Fixed » Closed (fixed)
Issue tags: -Quick fix

Automatically closed -- issue fixed for 2 weeks with no activity.