バージョン選択

フォーラム

メニュー

オンライン状況

48 人のユーザが現在オンラインです。 (41 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 48
もっと...

サイト内検索

機能要望 > 管理機能 > プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
sumida
投稿日時: 2013/6/13 15:19
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
違うパターンもやってもました。(前回分と共存できます。)
前回の仕様を変更したものです。
共存しても動作します。
お好きなほうでどうぞ。
(1) 前回
   プラグインのディレクトリ名を時下入力
(2) 今回
   data/downloads/plugin下のディレクトリ一覧で指示

data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php


        switch ($mode) {
            // インストール
            case 'install':
                $file_key = 'plugin_file';
                $this->arrErr = $this->checkUploadFile($file_key);
                if ($this->isError($this->arrErr) === false) {
                    $archive_file_name = $_FILES[$file_key]['name'];
                    // インストール処理.
                    $this->arrErr = $this->installPlugin($archive_file_name, 'plugin_file');
                    if ($this->isError($this->arrErr) === false) {
                        // コンパイルファイルのクリア処理
                        SC_Utils_Ex::clearCompliedTemplate();
                        $this->tpl_onload = "alert('プラグインをインストールしました。');";
                    }
                }
                break;
// added
            // インストール
            case 'installL':
                    // インストール処理.
                $plugin_dir_name = $objFormParam->getValue('dir_name');
                $this->arrErr = $this->installPluginL($plugin_dir_name, $plugin_dir_name);
                if ($this->isError($this->arrErr) === false) {
                    // コンパイルファイルのクリア処理
                    SC_Utils_Ex::clearCompliedTemplate();
                    $this->tpl_onload = "alert('プラグインをインストールしました。');";
                }
                if ($this->isError($this->arrErr) === true) {
                    $this->tpl_onload = "alert('" . $this->arrErr[$plugin_dir_name] . "');";
                }
                break;
// added



        // DBからプラグイン情報を取得
        $plugins = SC_Plugin_Util_Ex::getAllPlugin();

        foreach ($plugins as $key => $plugin) {
            // ロゴファイルへのパスを生成(ロゴが無い場合はNO_IMAGEを表示)
            if (file_exists(PLUGIN_HTML_REALDIR . $plugins[$key]['plugin_code'] . '/logo.png') === true){
                $plugins[$key]['logo'] = ROOT_URLPATH . 'plugin/' . $plugins[$key]['plugin_code'] . '/logo.png';
            } else {
                $plugins[$key]['logo'] = IMAGE_SAVE_URLPATH . 'noimage_plugin_list.png';
            }

            // 設定ファイルがあるかを判定.
            $plugins[$key]['config_flg'] = $this->isContainsFile(PLUGIN_UPLOAD_REALDIR . $plugin['plugin_code'], 'config.php');
            if ($plugins[$key]['enable'] === PLUGIN_ENABLE_TRUE) {
                // 競合するプラグインがあるかを判定.
                $plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']);
            }
        }

        $this->plugins = $plugins;
// added
        // インストールしていないプラグイン一覧
        $arrList = SC_Helper_FileManager_Ex::sfGetFileList(rtrim(PLUGIN_UPLOAD_REALDIR, '/'));

        // true  : プラグインディレクトリ一覧
        // false : インストールしていないプラグインディレクトリ一覧
        $dirALL = true;

        $arrDirLists = array();
        $arrCount = 0;
        for ($i=0; $i<count($arrList); $i++) {
            // ディレクトリであるかを判定.
            if ($arrList[$i]['is_dir'] === true) {
                 $dirName = $arrList[$i]['file_name'];
                 // インストール済みのプラグインかを判定.
                 $foundDirName = FALSE;
                 for ($j=0; $j<count($plugins); $j++) {
                     if ($plugins[$j]['plugin_code'] === $dirName) {
                         $foundDirName = TRUE;
                         break;
                     }
                 }
                 if ($foundDirName) {
                     $arrDirLists[$arrCount]['dir_name'] = $dirName;
                     $arrDirLists[$arrCount]['installed'] = false;
                     $arrCount++;
                 } else {
                     if ($dirALL === true) {
                         $arrDirLists[$arrCount]['dir_name'] = $dirName;
                         $arrDirLists[$arrCount]['installed'] = true;
                     $arrCount++;
                     }
                }
            }
        }
        $this->dirLists = $arrDirLists;
// added
    }




    function initParam(&$objFormParam, $mode) {
        $objFormParam->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('plugin_id', 'plugin_id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
        if ($mode === 'priority') {
            $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
        }
//  added
        if ($mode === 'installL') {
            $objFormParam->addParam('ディレクトリ名', 'dir_name');
        }
// added
    }


        // リフレクションオブジェクトを生成.
        $objReflection = new ReflectionClass('plugin_info');
        $arrPluginInfo = $this->getPluginInfo($objReflection);
        // プラグインクラスに必須となるパラメータが正常に定義されているかチェックします.
// changed
//        $arrErr = $this->checkPluginConstants($objReflection, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
// changed
        $arrErr = $this->checkPluginConstants($objReflection, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $key);
// changed
        if ($this->isError($arrErr) === true) {
            $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
            return $arrErr;
        }



// added
    function installPluginL($directory_name, $key) {
        $arrErr = array();
        // 必須拡張モジュールのチェック
        $arrErr = SC_Plugin_Util_Ex::checkExtension($key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // plugin_infoを読み込み.
        $arrErr = $this->requirePluginFile(PLUGIN_UPLOAD_REALDIR . $directory_name . '/' . 'plugin_info.php', $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // リフレクションオブジェクトを生成.
        $objReflection = new ReflectionClass('plugin_info');
        $arrPluginInfo = $this->getPluginInfo($objReflection);
        // プラグインクラスに必須となるパラメータが正常に定義されているかチェックします.
        $arrErr = $this->checkPluginConstants($objReflection, PLUGIN_UPLOAD_REALDIR . $directory_name . '/', $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // 既にインストールされていないかを判定.
        if ($this->isInstalledPlugin($arrPluginInfo['PLUGIN_CODE']) === true) {
            $arrErr[$key] = '※ ' . $arrPluginInfo['PLUGIN_NAME'] . 'は既にインストールされています。<br/>';
            return $arrErr;
        }

        // プラグイン情報をDB登録
        if ($this->registerData($arrPluginInfo) === false) {
            $arrErr[$key] = '※ DB登録に失敗しました。<br/>';
            return $arrErr;
        }

        // プラグイン情報を取得
        $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode($arrPluginInfo['PLUGIN_CODE']);

        // クラスファイルを読み込み.
        $plugin_class_file_path = $this->getPluginFilePath($plugin['plugin_code'], $plugin['class_name']);
        $arrErr = $this->requirePluginFile($plugin_class_file_path, $key);
        if ($this->isError($arrErr) === true) {
            $this->rollbackL($plugin['plugin_id']);
            return $arrErr;
        }

        // プラグインhtmlディレクトリ作成
        $plugin_html_dir_path = $this->getHtmlPluginDir($plugin['plugin_code']);
        $this->makeDir($plugin_html_dir_path);

        $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install');
        if ($this->isError($arrErr) === true) {
            $this->rollbackL($plugin['plugin_id'], $plugin_html_dir_path);
            return $arrErr;
        }
    }

    function rollbackL($plugin_id = '', $plugin_html_dir_path ='') {
        // DBからプラグイン情報を削除
        if (empty($plugin_id) === false) {
            SC_Plugin_Util_Ex::deletePluginByPluginId($plugin_id);
        }
        // htmlディレクトリを削除
        if (empty($plugin_html_dir_path) === false) {
            SC_Helper_FileManager_Ex::deleteFile($plugin_html_dir_path, true);
        }
    }
// added


function checkPluginConstantsは、引数を追加

    function checkPluginConstants(ReflectionClass $objReflection, $dir_path, $key) {


※運営チーム編集※
XOOPSのシステムエラーが発生していたためこの下の投稿はいったんカットさせていただいております。
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/8 18:48
     Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/9 17:14
       Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/11 13:36
         Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 tao_s 2013/6/11 15:25
           Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 nanasess 2013/6/11 16:01
             Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/12 10:19
               Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/12 17:58
                 Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/12 18:41
                 » 違うパターンもやってもました。(前回分と共存できます。) sumida 2013/6/13 15:19
                     Re: 違うパターンもやってもました。(前回分と共存できます。) eccube_admin 2013/6/14 13:04
                       Re: 違うパターンもやってもました。(前回分と共存できます。) sumida 2013/6/14 15:00
                   リロードでアンインストールが実行できていない。 sumida 2013/7/4 14:43
                     Re: リロードでアンインストールが実行できていない。 sumida 2013/7/4 16:59

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は93,331名です
総投稿数は111,015件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1841
7
h_tanaka
1752
8
red
1574
9
mcontact
1462
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.