Changeset 22663


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

プラグインの競合チェック関数を Utils に移行

refs #2179

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

Legend:

Unmodified
Added
Removed
  • branches/camp/camp-2_13-plugin/data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php

    r22654 r22663  
    206206            if ($plugins[$key]['enable'] === PLUGIN_ENABLE_TRUE) { 
    207207                // 競合するプラグインがあるかを判定. 
    208                 $plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']); 
     208                //$plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']); 
     209                $plugins[$key]['conflict_message'] = SC_Plugin_Util_Ex::checkConflictPlugin($plugin['plugin_id']); 
    209210            } 
    210211        } 
     
    994995 
    995996    /** 
    996      * フックポイントで衝突する可能性のあるプラグインを判定.メッセージを返します. 
    997      * 
    998      * @param int $plugin_id プラグインID 
    999      * @return string $conflict_alert_message メッセージ 
    1000      */ 
    1001     function checkConflictPlugin($plugin_id) 
    1002     { 
    1003         // フックポイントを取得します. 
    1004         $hookPoints = $this->getHookPoint($plugin_id); 
    1005  
    1006         $conflict_alert_message = ''; 
    1007         $arrConflictPluginName = array(); 
    1008         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    1009         foreach ($hookPoints as $hookPoint) { 
    1010             // 競合するプラグインを取得する, 
    1011             $table = 'dtb_plugin_hookpoint AS T1 LEFT JOIN dtb_plugin AS T2 ON T1.plugin_id = T2.plugin_id'; 
    1012             $where = 'T1.hook_point = ? AND NOT T1.plugin_id = ? AND T2.enable = ' . PLUGIN_ENABLE_TRUE; 
    1013             $objQuery->setGroupBy('T1.plugin_id, T2.plugin_name'); 
    1014             $conflictPlugins = $objQuery->select('T1.plugin_id, T2.plugin_name', $table, $where, array($hookPoint['hook_point'], $hookPoint['plugin_id'])); 
    1015  
    1016             // プラグイン名重複を削除する為、専用の配列に格納し直す. 
    1017             foreach ($conflictPlugins as $conflictPlugin) { 
    1018                 // プラグイン名が見つからなければ配列に格納 
    1019                 if (!in_array($conflictPlugin['plugin_name'], $arrConflictPluginName)) { 
    1020                     $arrConflictPluginName[] = $conflictPlugin['plugin_name']; 
    1021                 } 
    1022             } 
    1023         } 
    1024         // メッセージをセットします. 
    1025         foreach ($arrConflictPluginName as $conflictPluginName) { 
    1026             $conflict_alert_message .= '* ' .  $conflictPluginName . 'と競合する可能性があります。<br/>'; 
    1027         } 
    1028         return $conflict_alert_message; 
    1029     } 
    1030  
    1031     /** 
    1032997     * エラー情報が格納されているか判定します. 
    1033998     * 
     
    10431008    } 
    10441009 
    1045     /** 
    1046      * プラグインIDからフックポイントを取得します, 
    1047      * 
    1048      * @param string $plugin_id プラグインID 
    1049      * @return array フックポイントの連想配列. 
    1050      */ 
    1051     function getHookPoint($plugin_id) 
    1052     { 
    1053         $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    1054  
    1055         $table = 'dtb_plugin_hookpoint'; 
    1056         $where = 'plugin_id = ?'; 
    1057         return $objQuery->select('*', $table, $where, array($plugin_id)); 
    1058     } 
    10591010} 
  • branches/camp/camp-2_13-plugin/data/class/plugin/SC_Plugin_Util.php

    r22641 r22663  
    152152    } 
    153153 
    154     function getPluginHookPointList() 
     154    /** 
     155     *  プラグインフックポイントを取得する. 
     156     * 
     157     * @param integer $use_type 1=有効のみ 2=無効のみ 3=全て 
     158     * @return array フックポイントの一覧 
     159     */ 
     160    function getPluginHookPointList($use_type = 3) 
    155161    { 
    156162        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     
    158164        $cols = 'dtb_plugin_hookpoint.*, dtb_plugin.priority, dtb_plugin.plugin_name'; 
    159165        $from = 'dtb_plugin_hookpoint LEFT JOIN dtb_plugin USING(plugin_id)'; 
    160         $where = 'enable = 1'; 
    161         $arrRet = $objQuery->select($cols, $from, $where); 
    162         $arrList = array(); 
    163         foreach ($arrRet AS $key=>$val) { 
    164             $arrList[$val['hook_point']][$val['plugin_id']] = $val; 
    165         } 
    166         return $arrList; 
     166        switch ($use_type) { 
     167            case 1: 
     168                $where = 'enable = 1 AND use_flg = true'; 
     169            break; 
     170 
     171            case 2: 
     172                $where = 'enable = 1 AND use_flg = false'; 
     173            break; 
     174 
     175            case 3: 
     176            default: 
     177                $where = ''; 
     178            break; 
     179        } 
     180        return $objQuery->select($cols, $from, $where); 
     181        //$arrList = array(); 
     182        //foreach ($arrRet AS $key=>$val) { 
     183        //    $arrList[$val['hook_point']][$val['plugin_id']] = $val; 
     184        //} 
     185        //return $arrList; 
    167186    } 
    168187 
     
    205224        $objQuery->update('dtb_plugin_hookpoint', $sqlval, 'plugin_hookpoint_id = ?', array($plugin_hookpoint_id)); 
    206225    } 
     226 
     227    /** 
     228     * フックポイントで衝突する可能性のあるプラグインを判定.メッセージを返します. 
     229     * 
     230     * @param int $plugin_id プラグインID 
     231     * @return string $conflict_alert_message メッセージ 
     232     */ 
     233    function checkConflictPlugin($plugin_id = '') 
     234    { 
     235        // フックポイントを取得します. 
     236        if ($plugin_id > 0) { 
     237            $hookPoints = SC_Plugin_Util::getPluginHookPoint($plugin_id); 
     238        } else { 
     239            $hookPoints = SC_Plugin_Util::getPluginHookPointList(1); 
     240        } 
     241 
     242        $conflict_alert_message = ''; 
     243        $arrConflictPluginName = array(); 
     244        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     245        foreach ($hookPoints as $hookPoint) { 
     246            // 競合するプラグインを取得する, 
     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'])); 
     251 
     252            // プラグイン名重複を削除する為、専用の配列に格納し直す. 
     253            foreach ($conflictPlugins as $conflictPlugin) { 
     254                // プラグイン名が見つからなければ配列に格納 
     255                if (!in_array($conflictPlugin['plugin_name'], $arrConflictPluginName)) { 
     256                    $arrConflictPluginName[] = $conflictPlugin['plugin_name']; 
     257                } 
     258            } 
     259        } 
     260        // メッセージをセットします. 
     261        foreach ($arrConflictPluginName as $conflictPluginName) { 
     262            $conflict_alert_message .= '* ' .  $conflictPluginName . 'と競合する可能性があります。<br/>'; 
     263        } 
     264        return $conflict_alert_message; 
     265    } 
     266 
    207267} 
Note: See TracChangeset for help on using the changeset viewer.