[Svn-src-all:3897] [version-2_13-dev 22811] #2241 (プラグイン機構の自殺を阻止)

Seasoft admin @ mail.ec-cube.net
2013年 5月 11日 (土) 10:32:41 JST


Subversion committed to /home/svn/open 22811
http://svn.ec-cube.net/open_trac/changeset/22811
┌────────────────────────────┐
│更新者 :  Seasoft                                      │
│更新日時:  2013-05-11 10:32:41 +0900 (土, 11  5月 2013)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#2241 (プラグイン機構の自殺を阻止)

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_13-dev/data/class/SC_Response.php
U   branches/version-2_13-dev/data/class/SC_View.php
U   branches/version-2_13-dev/data/class/pages/error/LC_Page_Error.php

変更: branches/version-2_13-dev/data/class/SC_Response.php
===================================================================
--- branches/version-2_13-dev/data/class/SC_Response.php	2013-05-11 01:31:46 UTC (rev 22810)
+++ branches/version-2_13-dev/data/class/SC_Response.php	2013-05-11 01:32:41 UTC (rev 22811)
@@ -94,13 +94,16 @@
     {
         // ローカルフックポイント処理
         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
-        $arrBacktrace = debug_backtrace();
-        if (is_object($arrBacktrace[0]['object'])) {
-            $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
-            $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object']));
-            $class_name = get_class($arrBacktrace[0]['object']);
-            if ($class_name != $parent_class_name) {
-                $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object']));
+
+        if (is_object($objPlugin)) {
+            $arrBacktrace = debug_backtrace();
+            if (is_object($arrBacktrace[0]['object'])) {
+                $parent_class_name = get_parent_class($arrBacktrace[0]['object']);
+                $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object']));
+                $class_name = get_class($arrBacktrace[0]['object']);
+                if ($class_name != $parent_class_name) {
+                    $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object']));
+                }
             }
         }
 
@@ -124,33 +127,33 @@
      */
     function sendRedirect($location, $arrQueryString = array(), $inheritQueryString = false, $useSsl = null)
     {
-
         // ローカルフックポイント処理
         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
 
-        $arrBacktrace = debug_backtrace();
-        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']));
-            $class_name = get_class($arrBacktrace[0]['object']);
-            if ($class_name != $parent_class_name) {
-                $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($this));
+        if (is_object($objPlugin)) {
+            $arrBacktrace = debug_backtrace();
+            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']));
+                $class_name = get_class($arrBacktrace[0]['object']);
+                if ($class_name != $parent_class_name) {
+                    $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));
+                }
             }
-        } 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));
-            }
-
         }
 
         // url-path → URL 変換

変更: branches/version-2_13-dev/data/class/SC_View.php
===================================================================
--- branches/version-2_13-dev/data/class/SC_View.php	2013-05-11 01:31:46 UTC (rev 22810)
+++ branches/version-2_13-dev/data/class/SC_View.php	2013-05-11 01:32:41 UTC (rev 22811)
@@ -143,7 +143,9 @@
         if (!is_null($this->objPage)) {
             // フックポイントを実行.
             $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->objPage->plugin_activate_flg);
-            $objPlugin->doAction('prefilterTransform', array(&$source, $this->objPage, $smarty->_current_file));
+            if (is_object($objPlugin)) {
+                $objPlugin->doAction('prefilterTransform', array(&$source, $this->objPage, $smarty->_current_file));
+            }
         }
         return $source;
     }
@@ -159,7 +161,9 @@
         if (!is_null($this->objPage)) {
             // フックポイントを実行.
             $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->objPage->plugin_activate_flg);
-            $objPlugin->doAction('outputfilterTransform', array(&$source, $this->objPage, $smarty->_current_file));
+            if (is_object($objPlugin)) {
+                $objPlugin->doAction('outputfilterTransform', array(&$source, $this->objPage, $smarty->_current_file));
+            }
         }
         return $source;
     }

変更: branches/version-2_13-dev/data/class/pages/error/LC_Page_Error.php
===================================================================
--- branches/version-2_13-dev/data/class/pages/error/LC_Page_Error.php	2013-05-11 01:31:46 UTC (rev 22810)
+++ branches/version-2_13-dev/data/class/pages/error/LC_Page_Error.php	2013-05-11 01:32:41 UTC (rev 22811)
@@ -68,9 +68,11 @@
         // ディスプレイクラス生成
         $this->objDisplay = new SC_Display_Ex();
 
-        // transformでフックしているばあいに, 再度エラーが発生するため, コールバックを無効化.
         $objHelperPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg);
-        $objHelperPlugin->arrRegistedPluginActions = array();
+        if (is_object($objHelperPlugin)) {
+            // transformでフックしている場合に, 再度エラーが発生するため, コールバックを無効化.
+            $objHelperPlugin->arrRegistedPluginActions = array();
+        }
 
         // キャッシュから店舗情報取得(DBへの接続は行わない)
         $this->arrSiteInfo = SC_Helper_DB_Ex::sfGetBasisDataCache(false);




Svn-src-all メーリングリストの案内