Changeset 22664


Ignore:
Timestamp:
2013/03/10 00:54:33 (8 years ago)
Author:
Yammy
Message:

プラグインフックポイントの競合チェクを追加

refs #2179

Location:
branches/camp/camp-2_13-plugin/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/camp/camp-2_13-plugin/data/Smarty/templates/admin/ownersstore/plugin_hookpoint_list.tpl

    r22641 r22664  
    5757<form name="form1" method="post" action="?"> 
    5858<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 
    59 <input type="hidden" name="mode" value="" /> 
     59<input type="hidden" name="mode" value="conflict_check" /> 
    6060<input type="hidden" name="plugin_hookpoint_id" value="" /> 
    6161<div id="system" class="contents-main"> 
    62     <h2>プラグイン競合チェック</h2> 
    63  
    6462    <!--▼プラグイン一覧ここから--> 
    6563    <h2>フックポイント別プラグイン一覧</h2> 
     
    8280            <tr> 
    8381                <!--{if $hookpoint|@count > 0 && $smarty.foreach.plugin.iteration == '1'}--> 
    84                 <td rowspan="<!--{$hookpoint|@count}-->"><!--{$val.hook_point}--></td> 
     82                <td <!--{if in_array($val.hook_point, $arrConflict)}-->bgcolor="pink"<!--{/if}--> rowspan="<!--{$hookpoint|@count}-->"><!--{$val.hook_point}--></td> 
    8583                <!--{elseif !$smarty.foreach.plugin.iteration > 1}--> 
    86                 <td><!--{$val.hook_point}--></td> 
     84                <td <!--{if in_array($val.hook_point, $arrConflict)}-->bgcolor="pink"<!--{/if}-->><!--{$val.hook_point}--></td> 
    8785                <!--{/if}--> 
    8886                <td<!--{if $val.use_flg == "f"}--> bgcolor="grey"<!--{/if}-->><!--{$val.priority}--></td> 
  • branches/camp/camp-2_13-plugin/data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore_PluginHookPointList.php

    r22641 r22664  
    9696        } 
    9797        // DBからプラグイン情報を取得 
    98         $arrHookPoint = SC_Plugin_Util_Ex::getPluginHookPointList(); 
    99  
     98        $arrRet = SC_Plugin_Util_Ex::getPluginHookPointList(); 
     99        // 競合チェック 
     100        $this->arrConflict = SC_Plugin_Util_Ex::checkConflictPlugin(); 
     101        foreach ($arrRet AS $key=>$val) { 
     102            $arrHookPoint[$val['hook_point']][$val['plugin_id']] = $val; 
     103        } 
    100104        $this->arrHookPoint = $arrHookPoint; 
    101105    } 
  • branches/camp/camp-2_13-plugin/data/class/plugin/SC_Plugin_Util.php

    r22663 r22664  
    234234    { 
    235235        // フックポイントを取得します. 
     236        $where = 'T1.hook_point = ? AND NOT T1.plugin_id = ? AND T2.enable = ?'; 
    236237        if ($plugin_id > 0) { 
    237238            $hookPoints = SC_Plugin_Util::getPluginHookPoint($plugin_id); 
    238239        } else { 
    239240            $hookPoints = SC_Plugin_Util::getPluginHookPointList(1); 
     241            $where .= ' AND T1.use_flg = true'; 
    240242        } 
    241243 
    242244        $conflict_alert_message = ''; 
    243245        $arrConflictPluginName = array(); 
    244         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     246        $arrConflictHookPoint = array(); 
     247        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     248        $objQuery->setGroupBy('T1.hook_point, T1.plugin_id, T2.plugin_name'); 
     249        $table = 'dtb_plugin_hookpoint AS T1 LEFT JOIN dtb_plugin AS T2 ON T1.plugin_id = T2.plugin_id'; 
    245250        foreach ($hookPoints as $hookPoint) { 
    246251            // 競合するプラグインを取得する, 
    247             $table = 'dtb_plugin_hookpoint AS T1 LEFT JOIN dtb_plugin AS T2 ON T1.plugin_id = T2.plugin_id'; 
    248             $where = 'T1.hook_point = ? AND NOT T1.plugin_id = ? AND T2.enable = ' . PLUGIN_ENABLE_TRUE; 
    249             $objQuery->setGroupBy('T1.plugin_id, T2.plugin_name'); 
    250             $conflictPlugins = $objQuery->select('T1.plugin_id, T2.plugin_name', $table, $where, array($hookPoint['hook_point'], $hookPoint['plugin_id'])); 
     252            $conflictPlugins = $objQuery->select('T1.hook_point, T1.plugin_id, T2.plugin_name', $table, $where, array($hookPoint['hook_point'], $hookPoint['plugin_id'], PLUGIN_ENABLE_TRUE)); 
    251253 
    252254            // プラグイン名重複を削除する為、専用の配列に格納し直す. 
     
    256258                    $arrConflictPluginName[] = $conflictPlugin['plugin_name']; 
    257259                } 
    258             } 
    259         } 
    260         // メッセージをセットします. 
    261         foreach ($arrConflictPluginName as $conflictPluginName) { 
    262             $conflict_alert_message .= '* ' .  $conflictPluginName . 'と競合する可能性があります。<br/>'; 
    263         } 
    264         return $conflict_alert_message; 
     260                // プラグイン名が見つからなければ配列に格納 
     261                if (!in_array($conflictPlugin['hook_point'], $arrConflictHookPoint)) { 
     262                    $arrConflictHookPoint[] = $conflictPlugin['hook_point']; 
     263                } 
     264            } 
     265        } 
     266 
     267        if ($plugin_id > 0) { 
     268            // メッセージをセットします. 
     269            foreach ($arrConflictPluginName as $conflictPluginName) { 
     270                $conflict_alert_message .= '* ' .  $conflictPluginName . 'と競合する可能性があります。<br/>'; 
     271            } 
     272            return $conflict_alert_message; 
     273        } else { 
     274            return $arrConflictHookPoint; 
     275        } 
    265276    } 
    266277 
Note: See TracChangeset for help on using the changeset viewer.