PHP notice: Undefined property: stdClass::$format
Pasqualle - October 12, 2008 - 23:58
| Project: | Drupal |
| Version: | 6.x-dev |
| Component: | node.module |
| Category: | bug report |
| Priority: | normal |
| Assigned: | Unassigned |
| Status: | closed |
| Issue tags: | Quick fix |
Description
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

#1
Any word on this?
#2
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-
$formand$form_statevariables are passed tonode_form_build_previewfunction (in node.pages.inc), which passes them tonode_form_submit_build_nodefunction to build$nodeobject, which passes them tonode_submitfunction (defined in node.module), at this point exactly$nodeobject 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,
$nodeobject is passed to series of functions, till it reaches "node_view" function (in node.module), where the error is happening due to line 1037:<?php$node->body = check_markup($node->body, $node->format, FALSE);
?>
where the
$node->formatdoes not exist.Note: This is not happening in case of viewing the content type after submission, because
$nodeobject 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
$nodeobject 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 :)
#3
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
#4
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.
#5
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.
#6
Thanks swentel for your attention. :)
#7
Chasing HEAD
#8
Tagging & bumping.
#9
A new argument for my "put body and format in a same element".
Format is an integer, this should be
$node->format = 0;.#10
#11
Looks good the input format changes will likely change how this works anyway (and with tests), so RTBC.
#12
Committed, thanks!
Moving down to 6.x.
#13
Thanks, committed to Drupal 6 as well.
#14
Automatically closed -- issue fixed for 2 weeks with no activity.