Changeset 23012


Ignore:
Timestamp:
2013/07/30 10:27:38 (11 years ago)
Author:
habu
Message:

#1957 プラグインのアップデート時にプラグイン情報が更新されるように

File:
1 edited

Legend:

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

    r22994 r23012  
    604604        $arrErr = $this->execPlugin($target_plugin, 'plugin_update', 'update'); 
    605605 
     606        // プラグイン情報を更新 
     607        if ($this->registerData($arrPluginInfo, 'update') === false) { 
     608            $this->rollBack(DOWNLOADS_TEMP_PLUGIN_UPDATE_DIR); 
     609            $arrErr['plugin_file'] = '※ プラグイン情報の更新に失敗しました。<br/>'; 
     610            return $arrErr; 
     611        } 
     612 
    606613        // 保存ディレクトリの削除. 
    607614        SC_Helper_FileManager_Ex::deleteFile(DOWNLOADS_TEMP_PLUGIN_UPDATE_DIR, false); 
     
    757764     * 
    758765     * @param array $arrPluginInfo プラグイン情報を格納した連想配列. 
     766     * @param string $mode モード 
    759767     * @return array エラー情報を格納した連想配列. 
    760768     */ 
    761     function registerData($arrPluginInfo) 
     769    function registerData($arrPluginInfo, $mode = 'install') 
    762770    { 
    763771        // プラグイン情報をDB登録. 
    764772        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    765773        $arr_sqlval_plugin = array(); 
    766         $plugin_id = $objQuery->nextVal('dtb_plugin_plugin_id'); 
    767         $arr_sqlval_plugin['plugin_id'] = $plugin_id; 
    768774        $arr_sqlval_plugin['plugin_name'] = $arrPluginInfo['PLUGIN_NAME']; 
    769775        $arr_sqlval_plugin['plugin_code'] = $arrPluginInfo['PLUGIN_CODE']; 
     
    786792        $arr_sqlval_plugin['enable'] = PLUGIN_ENABLE_FALSE; 
    787793        $arr_sqlval_plugin['update_date'] = 'CURRENT_TIMESTAMP'; 
    788         $objQuery->insert('dtb_plugin', $arr_sqlval_plugin); 
    789  
     794        if ($mode === 'install') { 
     795            // 新規登録 
     796            $plugin_id = $objQuery->nextVal('dtb_plugin_plugin_id'); 
     797            $arr_sqlval_plugin['plugin_id'] = $plugin_id; 
     798            $objQuery->insert('dtb_plugin', $arr_sqlval_plugin); 
     799        } elseif($mode === 'update') { 
     800            // 情報を更新 
     801            $plugin_id = $objQuery->get('plugin_id', 'dtb_plugin', 'plugin_code = ? ', array($arrPluginInfo['PLUGIN_CODE'])); 
     802            $arrUnsetKeys = array('plugin_code', 'priority', 'enable'); 
     803            foreach ($arrUnsetKeys as $key) { 
     804                unset($arr_sqlval_plugin[$key]); 
     805            } 
     806            $objQuery->update('dtb_plugin', $arr_sqlval_plugin, 'plugin_id = ?', array($plugin_id)); 
     807            // 該当プラグインのフックポイントを一旦削除 
     808            $objQuery->delete('dtb_plugin_hookpoint', 'plugin_id = ? ', array($plugin_id)); 
     809        } else { 
     810            GC_Utils_Ex::gfPrintLog("モードの指定が不正($mode)", ERROR_LOG_REALFILE); 
     811            return false; 
     812        } 
     813         
    790814        // フックポイントをDB登録. 
    791815        $hook_point = $arrPluginInfo['HOOK_POINTS']; 
Note: See TracChangeset for help on using the changeset viewer.