Index: branches/version-2_12-dev/data/class/SC_Response.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_Response.php	(revision 21743)
+++ branches/version-2_12-dev/data/class/SC_Response.php	(revision 21745)
@@ -124,5 +124,5 @@
 
         $arrBacktrace = debug_backtrace();
-        if (is_object($arrBacktrace[0]['object'])) {
+        if (is_object($arrBacktrace[0]['object']) && method_exists($arrBacktrace[0]['object'], 'getMode')) {
             $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
             $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object']));
@@ -131,4 +131,19 @@
                 $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($this));
             }
+        } elseif (is_object($arrBacktrace[0]['object'])) {
+            $pattern = '/^[a-zA-Z0-9_]+$/';
+            $mode = null;
+            if (isset($_GET['mode']) && preg_match($pattern, $_GET['mode'])) {
+                $mode =  $_GET['mode'];
+            } elseif (isset($_POST['mode']) && preg_match($pattern, $_POST['mode'])) {
+                $mode = $_POST['mode'];
+            }
+            $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
+            $objPlugin->doAction($parent_class_name . '_action_' . $mode, array($arrBacktrace[0]['object']));
+            $class_name = get_class($arrBacktrace[0]['object']);
+            if ($class_name != $parent_class_name) {
+                $objPlugin->doAction($class_name . '_action_' . $mode, array($this));
+            }
+
         }
 
