From c6b02f25a273d556b7bc4424a54dcf4a18f78d38 Mon Sep 17 00:00:00 2001
From: Jordan Halterman <jordan.halterman@gmail.com>
Date: Tue, 21 Feb 2012 21:54:06 -0800
Subject: [PATCH] Issue #1447328: Check that form is activated before
 analyzing form elements.

---
 rules_forms.module |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/rules_forms.module b/rules_forms.module
index 900581d..402917a 100755
--- a/rules_forms.module
+++ b/rules_forms.module
@@ -225,11 +225,13 @@ function rules_forms_invoke_event($event_type, &$form, &$form_state, $form_id =
  */
 function rules_forms_after_build($form, &$form_state) {
   $form_events = variable_get('rules_forms_event_info', array());
-  $form_id = isset($form['#id']) ? str_replace('-', '_', $form['#id']) : '';
+  $form_id = $form['form_id']['#value'];
 
   // Set elements for form events if necessary.
-  if ((isset($form_events[$form_id]['reset']) && $form_events[$form_id]['reset'])
-      || (!isset($form_events[$form_id]['elements']) || empty($form_events[$form_id]['elements']))) {
+  // Ensure that the form ID matches an activated form's form ID to prevent
+  // improper Rules events from being loaded in hook_rules_event_info().
+  if (isset($form_events[$form_id]) && ((isset($form_events[$form_id]['reset']) && $form_events[$form_id]['reset'])
+      || (!isset($form_events[$form_id]['elements']) || empty($form_events[$form_id]['elements'])))) {
 
     if (!empty($form_events[$form_id]['reset'])) {
       $form_events[$form_id]['reset'] = FALSE;
-- 
1.7.8.2

