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

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

File:
1 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 
Note: See TracChangeset for help on using the changeset viewer.