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

Seasoft admin @ mail.ec-cube.net
2013年 5月 11日 (土) 00:07:27 JST


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

Log:
--------------------------------------------------------
#2241 (プラグイン機構の自殺を阻止)
  * DB接続できない場合、DB接続エラーで落ちるのは仕方がないかなと思いこの対応。現状把握しているよりも早死する経路があると、この対応は不適切な懸念はある。インスタンスを生成しつつ、関連するDB接続のみ回避できると、ベターなのかも。
#2242 (プラグインが破損している場合に強行突破できる機会を与える)

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_13-dev/data/class/helper/SC_Helper_Plugin.php

変更: branches/version-2_13-dev/data/class/helper/SC_Helper_Plugin.php
===================================================================
--- branches/version-2_13-dev/data/class/helper/SC_Helper_Plugin.php	2013-05-10 11:19:34 UTC (rev 22807)
+++ branches/version-2_13-dev/data/class/helper/SC_Helper_Plugin.php	2013-05-10 15:07:27 UTC (rev 22808)
@@ -57,8 +57,18 @@
         foreach ($arrPluginDataList as $arrPluginData) {
             // プラグイン本体ファイル名が取得したプラグインディレクトリ一覧にある事を確認
             if (array_search($arrPluginData['plugin_code'], $arrPluginDirectory) !== false) {
+                $plugin_file_path = PLUGIN_UPLOAD_REALDIR . $arrPluginData['plugin_code'] . '/' . $arrPluginData['class_name'] . '.php';
+                // プラグイン本体ファイルが存在しない場合
+                if (!file_exists($plugin_file_path)) {
+                    // エラー出力
+                    $msg = 'プラグイン本体ファイルが存在しない。当該プラグインを無視して続行する。';
+                    $msg .= 'ファイル=' . var_export($plugin_file_path, true) . '; ';
+                    trigger_error($msg, E_USER_WARNING);
+                    // 次のプラグインへ続行
+                    continue 1;
+                }
                 // プラグイン本体ファイルをrequire.
-                require_once PLUGIN_UPLOAD_REALDIR . $arrPluginData['plugin_code'] . '/' . $arrPluginData['class_name'] . '.php';
+                require_once $plugin_file_path;
 
                 // プラグインのインスタンス生成.
                 $objPlugin = new $arrPluginData['class_name']($arrPluginData);
@@ -82,13 +92,6 @@
     static function getSingletonInstance($plugin_activate_flg = true)
     {
         if (!isset($GLOBALS['_SC_Helper_Plugin_instance'])) {
-            // プラグインのローダーがDB接続を必要とするため、
-            // SC_Queryインスタンス生成後のみオブジェクトを生成する。
-            require_once CLASS_EX_REALDIR . 'SC_Query_Ex.php';
-            if (is_null(SC_Query_Ex::getPoolInstance())) {
-                return false;
-            }
-
             $GLOBALS['_SC_Helper_Plugin_instance'] = new SC_Helper_Plugin_Ex();
             $GLOBALS['_SC_Helper_Plugin_instance']->load($plugin_activate_flg);
         }




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