Index: flag_actions.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/Attic/flag_actions.module,v
retrieving revision 1.1.2.12.2.5
diff -u -r1.1.2.12.2.5 flag_actions.module
--- flag_actions.module	29 Sep 2009 02:27:37 -0000	1.1.2.12.2.5
+++ flag_actions.module	8 May 2010 01:28:38 -0000
@@ -509,6 +509,19 @@
 }
 
 /**
+ * Generic submit handler for validating flag actions.
+ */
+function flag_actions_form_validate($form, &$form_state) {
+  // Special validation handlers may be needed to save this form properly.
+  // Try to load the action's validation routine if needed.
+  $callback = $form_state['values']['flag']['callback'];
+  $validate_function = $callback . '_validate';
+  if (function_exists($validate_function)) {
+    $validate_function($form, $form_state);
+  }
+}
+
+/**
  * Generic submit handler for saving flag actions.
  */
 function flag_actions_form_submit($form, &$form_state) {
@@ -527,8 +540,9 @@
   $repeat_threshold = $form_state['values']['flag']['repeat_threshold'];
   $callback         = $form_state['values']['flag']['callback'];
 
-  $parameters = $form_state['values'];
-  unset($parameters['flag']);
+  // Specialized forms may need to execute their own submit handlers on save.
+  $submit_function = $callback . '_submit';
+  $parameters = function_exists($submit_function) ? $submit_function($form, $form_state) : array();
 
   if (empty($aid)) {
     $aid = flag_actions_insert_action($flag->fid, $event, $threshold, $repeat_threshold, $callback, $parameters);
