From b80242960d6be9ec039d8a5f309149edd7e727fd Mon Sep 17 00:00:00 2001
From: andrew morton <drewish@zivtech.com>
Date: Fri, 23 Sep 2011 13:07:53 -0400
Subject: [PATCH 1/2] Check the submission for the bundle type rather than the node.

---
 webform_entity.module |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/webform_entity.module b/webform_entity.module
index d57c870..4995af2 100644
--- a/webform_entity.module
+++ b/webform_entity.module
@@ -237,7 +237,7 @@ function webform_entity_webform_submission_submit(&$form, &$form_state) {
  * Implements hook_webform_submission_insert().
  */
 function webform_entity_webform_submission_insert($node, $submission) {
-  if (in_array($node->type, array_keys(webform_entity_get_types()))) {
+  if (in_array($submission->bundle, array_keys(webform_entity_get_types()))) {
     // Webform clears what we add to the $submission in $form during it's submit
     //  handler, so we must stash the object somewhere.
     if ($fielded_submission = drupal_static('webform_entity_webform_submitted_object')) {
@@ -258,7 +258,7 @@ function webform_entity_webform_submission_insert($node, $submission) {
  * Implements hook_webform_submission_update().
  */
 function webform_entity_webform_submission_update($node, $submission) {
-  if (in_array($node->type, array_keys(webform_entity_get_types()))) {
+  if (in_array($submission->bundle, array_keys(webform_entity_get_types()))) {
     // Webform clears what we add to the $submission in $form during it's submit
     // handler, so we must stash the object somewhere.
     if ($fielded_submission = drupal_static('webform_entity_webform_submitted_object')) {
@@ -273,7 +273,7 @@ function webform_entity_webform_submission_update($node, $submission) {
  * Implements hook_webform_submission_delete().
  */
 function webform_entity_webform_submission_delete($node, $submission) {
-  if (in_array($node->type, array_keys(webform_entity_get_types()))) {
+  if (in_array($submission->bundle, array_keys(webform_entity_get_types()))) {
     module_load_include('inc', 'field', 'field.attach');
     field_attach_delete('webform_submission_entity', $submission);
   }
@@ -324,7 +324,7 @@ function webform_entity_webform_submission_render_alter(&$renderable) {
   // Remove page breaks from sent e-mails.
   $submission = $renderable['#submission'];
   $node = $renderable['#node'];
-  if (in_array($node->type, array_keys(webform_entity_get_types()))) {
+  if (in_array($submission->bundle, array_keys(webform_entity_get_types()))) {
     $view_mode = 'full';
     // Build and attach the field content to the render array.
     field_attach_prepare_view('webform_submission_entity', array($submission->sid => $submission), $view_mode);
-- 
1.7.0.4


From 1ead5d1e2ef6cef77c1171d4a2ec6ad556ee6a4f Mon Sep 17 00:00:00 2001
From: andrew morton <drewish@zivtech.com>
Date: Fri, 23 Sep 2011 13:16:23 -0400
Subject: [PATCH 2/2] Fix some bugginess and simplify webform_entity_webform_submission_load().

---
 webform_entity.module |   26 +++++++++++---------------
 1 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/webform_entity.module b/webform_entity.module
index 4995af2..679fc64 100644
--- a/webform_entity.module
+++ b/webform_entity.module
@@ -283,28 +283,24 @@ function webform_entity_webform_submission_delete($node, $submission) {
  * Implements hook_webform_submission_load().
  */
 function webform_entity_webform_submission_load($submissions) {
-  $submission_bundles = &drupal_static('__FUNCTION__', array());
-  $submissions_to_lookup = array_diff_key($submissions, $submission_bundles);
-  // Not all submissions may be fielded, make a list of fieldable bundles.
-  $field_enabled_submissions = array();
-  if (count($submissions_to_lookup)) {
+  // If I was webform I wouldn't invoke this hook with an empty array...
+  // but I'm not webform, and it does.
+  if (count($submissions)) {
     $results = db_select('webform_submissions', 'ws')
       ->fields('ws', array('sid', 'bundle'))
       ->condition('sid', array_keys($submissions), 'IN')
       ->execute()
       ->fetchAllKeyed();
-    $submission_bundles += $results;
-  }
-  foreach ($submissions as $sid => &$submission) {
-    if (isset($submission_bundles[$sid])) {
-      $submission->bundle = $submission_bundles[$sid];
-      if (in_array($submission->bundle, array_keys(webform_entity_get_types()))) {
-        $field_enabled_submissions[$sid] = &$submission;
-      }
+    $field_enabled_submissions = array();
+    foreach ($results as $sid => $bundle) {
+      $submissions[$sid]->bundle = $bundle;
+      $field_enabled_submissions[$sid] = $submissions[$sid];
+    }
+    if ($field_enabled_submissions) {
+      // Load fields via the Field API and attach them to the entity object.
+      field_attach_load('webform_submission_entity', $field_enabled_submissions);
     }
   }
-  // Load fields via the Field API and attach them to the entity object.
-  field_attach_load('webform_submission_entity', $field_enabled_submissions);
 }
 
 /**
-- 
1.7.0.4

