Ignore:
Timestamp:
2013/07/20 16:21:44 (8 years ago)
Author:
adachi
Message:

#2308 開発合宿(2013/06)プラグイン改善分をマージ

File:
1 edited

Legend:

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

    r22926 r22978  
    201201            if ($plugins[$key]['enable'] === PLUGIN_ENABLE_TRUE) { 
    202202                // 競合するプラグインがあるかを判定. 
    203                 $plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']); 
     203                //$plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']); 
     204                $plugins[$key]['conflict_message'] = SC_Plugin_Util_Ex::checkConflictPlugin($plugin['plugin_id']); 
    204205            } 
    205206        } 
     
    340341    function installPlugin($archive_file_name, $key) 
    341342    { 
     343        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     344        $objQuery->begin(); 
     345         
    342346        // 一時展開ディレクトリにファイルがある場合は事前に削除. 
    343347        $arrFileHash = SC_Helper_FileManager_Ex::sfGetFileList(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR); 
     
    412416        $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install'); 
    413417        if ($this->isError($arrErr) === true) { 
     418            // エラー時, transactionがabortしてるのでロールバック 
     419            $objQuery->rollback(); 
    414420            $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $plugin['plugin_id'], $plugin_html_dir_path); 
    415421            return $arrErr; 
    416422        } 
    417423 
     424        $objQuery->commit(); 
     425         
    418426        // 不要なファイルの削除 
    419427        SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, false); 
     
    755763        // プラグイン情報をDB登録. 
    756764        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    757         $objQuery->begin(); 
    758765        $arr_sqlval_plugin = array(); 
    759766        $plugin_id = $objQuery->nextVal('dtb_plugin_plugin_id'); 
     
    847854    function execPlugin($obj, $class_name, $exec_func) 
    848855    { 
     856        $objPluginInstaller = new SC_Plugin_Installer($exec_func, $obj); 
     857 
    849858        $arrErr = array(); 
    850859        if (method_exists($class_name, $exec_func) === true) { 
    851             $ret = call_user_func(array($class_name, $exec_func), $obj); 
     860            $ret = call_user_func_array( 
     861                    array($class_name, $exec_func), 
     862                    array($obj, $objPluginInstaller)); 
    852863            if (!(is_null($ret) || $ret === true)) { 
    853864                $arrErr[$obj['plugin_code']] = $ret; 
    854865            } 
     866            $arrInstallErr = $objPluginInstaller->execPlugin(); 
     867            if ($arrInstallErr) { 
     868                $arrErr['plugin_file'] = "プラグインのインストールにしっぱいしました.<br/>"; 
     869            } 
    855870        } else { 
    856             $arrErr['plugin_error'] = '※ ' . $class_name . '.php に' . $exec_func . 'が見つかりません。<br/>'; 
    857         } 
    858  
     871            $arrErr['plugin_file'] = '※ ' . $class_name . '.php に' . $exec_func . 'が見つかりません。<br/>'; 
     872        } 
     873         
    859874        return $arrErr; 
    860875    } 
Note: See TracChangeset for help on using the changeset viewer.