[Svn-src-all:2771] [version-2_12-dev 21670] #1692 フックポイント競合にエラーメッセージが正常に出力されないバグを修正

h_yoshimoto admin @ mail.ec-cube.net
2012年 3月 23日 (金) 13:53:57 JST


Subversion committed to /home/svn/open 21670
http://svn.ec-cube.net/open_trac/changeset/21670
┌────────────────────────────┐
│更新者 :  h_yoshimoto                                  │
│更新日時:  2012-03-23 13:53:57 +0900 (金, 23  3月 2012)│
└────────────────────────────┘

Log:
--------------------------------------------------------
#1692 フックポイント競合にエラーメッセージが正常に出力されないバグを修正

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
U   branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php

変更: branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php
===================================================================
--- branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php	2012-03-23 04:49:54 UTC (rev 21669)
+++ branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php	2012-03-23 04:53:57 UTC (rev 21670)
@@ -843,22 +843,30 @@
      * @return string $conflict_alert_message メッセージ
      */
     function checkConflictPlugin($plugin_id) {
-        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
-        $table = 'dtb_plugin_hookpoint';
-        $where = 'plugin_id = ?';
-        $conflictHookPoints = $objQuery->select('*', $table, $where, array($plugin_id));
+        // フックポイントを取得します.
+        $hookPoints = $this->getHookPoint($plugin_id);
 
         $conflict_alert_message = '';
-        foreach ($conflictHookPoints as $conflictHookPoint) {
-            // 登録商品のチェック
+        $arrConflictPluginName = array();
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
+        foreach ($hookPoints as $hookPoint) {
+            // 競合するプラグインを取得する,
             $table = 'dtb_plugin_hookpoint AS T1 LEFT JOIN dtb_plugin AS T2 ON T1.plugin_id = T2.plugin_id';
             $where = 'T1.hook_point = ? AND NOT T1.plugin_id = ? AND T2.enable = ' . PLUGIN_ENABLE_TRUE . ' GROUP BY T1.plugin_id';
-            $conflictPlugins = $objQuery->select('T1.plugin_id, T2.plugin_name', $table, $where, array($conflictHookPoint['hook_point'], $conflictHookPoint['plugin_id']));
+            $conflictPlugins = $objQuery->select('T1.plugin_id, T2.plugin_name', $table, $where, array($hookPoint['hook_point'], $hookPoint['plugin_id']));
 
-            foreach ($conflictPlugins as $conflictPlugin) {
-                $conflict_alert_message =+ '* ' .  $conflictPlugin['plugin_name'] . 'と競合する可能性があります。<br/>';
+            // プラグイン名重複を削除する為、専用の配列に格納し直す.
+            foreach($conflictPlugins as $conflictPlugin){
+                // プラグイン名が見つからなければ配列に格納
+                if( !in_array( $conflictPlugin['plugin_name'], $arrConflictPluginName ) ) {
+                    $arrConflictPluginName[] = $conflictPlugin['plugin_name'];
+                }
             }
         }
+        // メッセージをセットします.
+        foreach ($arrConflictPluginName as $conflictPluginName) {
+            $conflict_alert_message .= '* ' .  $conflictPluginName . 'と競合する可能性があります。<br/>';
+        }
         return $conflict_alert_message;
     }
 
@@ -874,4 +882,18 @@
         }
         return false;
     }
+    
+    /**
+     * プラグインIDからフックポイントを取得します,
+     * 
+     * @param string $plugin_id プラグインID
+     * @return array フックポイントの連想配列.
+     */
+    function getHookPoint($plugin_id) {
+        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
+        
+        $table = 'dtb_plugin_hookpoint';
+        $where = 'plugin_id = ?';
+        return $objQuery->select('*', $table, $where, array($plugin_id));
+    }
 }




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