So, this is what I'm trying to do. I've got a webform submission filled in and saved to the database. When viewing the submission (node/nid/submission/sid). I want to show a form, which ask the user for a key. When the key is filled in I want to change the display of the submission (not the data in the database) using the webform_submission_load() hook. This is the code right now:
// webform hook
function mymodule_webform_submission_load($submissions) {
$key_status = mymodule_get_key_status();
if($key_status) {
//change the submission display values
}
}
// return TRUE or FALSE, depending on form submit
function mymodule_get_key_status($setkey = FALSE) {
$status = &drupal_static(__FUNCTION__);
if(!isset($status)) {
$status = $setkey;
// display form when key is not provided
if(!$status) {
$getform = drupal_get_form('mymodule_form');
$output = drupal_render($getform);
drupal_set_message($output, 'form', FALSE);
}
// key provided in form, so don't display the form
else {
$errors = drupal_get_messages('form');
}
}
return $status;
}
// form submit callback
function mymodule_form_custom_submit($form, &$form_state) {
if (isset($form_state['values']['form_value'])) {
$key = $form_state['values']['form_value']);
drupal_static_reset('mymodule_get_key_status');
mymodule_get_key_status(TRUE);
}
}
When viewing a submission I see the submission and the form. When I submit the form nothing changes and the form is displayed again. When I debug the return value of the mymodule_get_key_status function the following happens. First the function return FALSE, then the form calls the function and the function returns true. After that the function is called again by the webform hook. The function returns false again... Not what I expected. When I call mymodule_get_key_status();
in the form submit callback it returns true. So the drupal_static is set properly.
Why isn't the code working as I expected?