Changeset 22811


Ignore:
Timestamp:
2013/05/11 10:32:41 (7 years ago)
Author:
Seasoft
Message:

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

Location:
branches/version-2_13-dev/data/class
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/SC_Response.php

    r22567 r22811  
    9595        // ローカルフックポイント処理 
    9696        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg); 
    97         $arrBacktrace = debug_backtrace(); 
    98         if (is_object($arrBacktrace[0]['object'])) { 
    99             $parent_class_name = get_parent_class($arrBacktrace[0]['object']); 
    100             $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object'])); 
    101             $class_name = get_class($arrBacktrace[0]['object']); 
    102             if ($class_name != $parent_class_name) { 
    103                 $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object'])); 
     97 
     98        if (is_object($objPlugin)) { 
     99            $arrBacktrace = debug_backtrace(); 
     100            if (is_object($arrBacktrace[0]['object'])) { 
     101                $parent_class_name = get_parent_class($arrBacktrace[0]['object']); 
     102                $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object'])); 
     103                $class_name = get_class($arrBacktrace[0]['object']); 
     104                if ($class_name != $parent_class_name) { 
     105                    $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object'])); 
     106                } 
    104107            } 
    105108        } 
     
    125128    function sendRedirect($location, $arrQueryString = array(), $inheritQueryString = false, $useSsl = null) 
    126129    { 
    127  
    128130        // ローカルフックポイント処理 
    129131        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg); 
    130132 
    131         $arrBacktrace = debug_backtrace(); 
    132         if (is_object($arrBacktrace[0]['object']) && method_exists($arrBacktrace[0]['object'], 'getMode')) { 
    133             $parent_class_name = get_parent_class($arrBacktrace[0]['object']); 
    134             $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object'])); 
    135             $class_name = get_class($arrBacktrace[0]['object']); 
    136             if ($class_name != $parent_class_name) { 
    137                 $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($this)); 
    138             } 
    139         } elseif (is_object($arrBacktrace[0]['object'])) { 
    140             $pattern = '/^[a-zA-Z0-9_]+$/'; 
    141             $mode = null; 
    142             if (isset($_GET['mode']) && preg_match($pattern, $_GET['mode'])) { 
    143                 $mode =  $_GET['mode']; 
    144             } elseif (isset($_POST['mode']) && preg_match($pattern, $_POST['mode'])) { 
    145                 $mode = $_POST['mode']; 
    146             } 
    147             $parent_class_name = get_parent_class($arrBacktrace[0]['object']); 
    148             $objPlugin->doAction($parent_class_name . '_action_' . $mode, array($arrBacktrace[0]['object'])); 
    149             $class_name = get_class($arrBacktrace[0]['object']); 
    150             if ($class_name != $parent_class_name) { 
    151                 $objPlugin->doAction($class_name . '_action_' . $mode, array($this)); 
    152             } 
    153  
     133        if (is_object($objPlugin)) { 
     134            $arrBacktrace = debug_backtrace(); 
     135            if (is_object($arrBacktrace[0]['object']) && method_exists($arrBacktrace[0]['object'], 'getMode')) { 
     136                $parent_class_name = get_parent_class($arrBacktrace[0]['object']); 
     137                $objPlugin->doAction($parent_class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($arrBacktrace[0]['object'])); 
     138                $class_name = get_class($arrBacktrace[0]['object']); 
     139                if ($class_name != $parent_class_name) { 
     140                    $objPlugin->doAction($class_name . '_action_' . $arrBacktrace[0]['object']->getMode(), array($this)); 
     141                } 
     142            } elseif (is_object($arrBacktrace[0]['object'])) { 
     143                $pattern = '/^[a-zA-Z0-9_]+$/'; 
     144                $mode = null; 
     145                if (isset($_GET['mode']) && preg_match($pattern, $_GET['mode'])) { 
     146                    $mode =  $_GET['mode']; 
     147                } elseif (isset($_POST['mode']) && preg_match($pattern, $_POST['mode'])) { 
     148                    $mode = $_POST['mode']; 
     149                } 
     150                $parent_class_name = get_parent_class($arrBacktrace[0]['object']); 
     151                $objPlugin->doAction($parent_class_name . '_action_' . $mode, array($arrBacktrace[0]['object'])); 
     152                $class_name = get_class($arrBacktrace[0]['object']); 
     153                if ($class_name != $parent_class_name) { 
     154                    $objPlugin->doAction($class_name . '_action_' . $mode, array($this)); 
     155                } 
     156            } 
    154157        } 
    155158 
  • branches/version-2_13-dev/data/class/SC_View.php

    r22567 r22811  
    144144            // フックポイントを実行. 
    145145            $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->objPage->plugin_activate_flg); 
    146             $objPlugin->doAction('prefilterTransform', array(&$source, $this->objPage, $smarty->_current_file)); 
     146            if (is_object($objPlugin)) { 
     147                $objPlugin->doAction('prefilterTransform', array(&$source, $this->objPage, $smarty->_current_file)); 
     148            } 
    147149        } 
    148150        return $source; 
     
    160162            // フックポイントを実行. 
    161163            $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->objPage->plugin_activate_flg); 
    162             $objPlugin->doAction('outputfilterTransform', array(&$source, $this->objPage, $smarty->_current_file)); 
     164            if (is_object($objPlugin)) { 
     165                $objPlugin->doAction('outputfilterTransform', array(&$source, $this->objPage, $smarty->_current_file)); 
     166            } 
    163167        } 
    164168        return $source; 
  • branches/version-2_13-dev/data/class/pages/error/LC_Page_Error.php

    r22567 r22811  
    6969        $this->objDisplay = new SC_Display_Ex(); 
    7070 
    71         // transformでフックしているばあいに, 再度エラーが発生するため, コールバックを無効化. 
    7271        $objHelperPlugin = SC_Helper_Plugin_Ex::getSingletonInstance($this->plugin_activate_flg); 
    73         $objHelperPlugin->arrRegistedPluginActions = array(); 
     72        if (is_object($objHelperPlugin)) { 
     73            // transformでフックしている場合に, 再度エラーが発生するため, コールバックを無効化. 
     74            $objHelperPlugin->arrRegistedPluginActions = array(); 
     75        } 
    7476 
    7577        // キャッシュから店舗情報取得(DBへの接続は行わない) 
Note: See TracChangeset for help on using the changeset viewer.