Ticket #2181 (closed 改善提案: 修正済)
開発合宿:プラグインのインストーラ
Reported by: | adachi | Owned by: | somebody |
---|---|---|---|
Priority: | 中 | Milestone: | EC-CUBE2.13.0 |
Component: | フロント | Version: | 2.12.3 |
Keywords: | Cc: | ||
修正済み: | yes |
Description (last modified by adachi) (diff)
プラグインインストーラ
以下は、現状プラグイン任せなので、エラーがおきやすい
・インストール ・アンインストール ・有効 ・無効
インストール用ユーティリティを用意し、プラグイン作成者に使ってもらう
※テーブル作成、ファイルコピー、ブロック追加など
フロー
* フロー LC_Page_Admin_OwnersStore::installPlugin - トランザクション開始 (SC_QUery::begin()) - プラグインアーカイブの一時ディレクトリを初期化 - 必須拡張モジュールのチェック - アーカイブを一時ディレクトリに解凍 - plugin_info.phpを読み込み - plugin_info.phpの内容チェック - プラグインコードから、既にプラグインがインストールされているかチェック - dtb_pluginへレコードを登録 - 一時ディレクトリから, プラグイン保存ディレクトリへコピー - プラグインメインクラスをロード - プラグインHTMLディレクトリを作成 - プラグインインストーラを生成 - プラグインのinstallメソッドを実行 PLUGIN::install($arrPlugin, $objInstaller); - ★インストーラがインストール処理を実行 (SC_Plugin_Installer::execPlugin()) - トランザクション終了(SC_Query::commit()) - 一時ディレクトリ削除 * インストール処理のフロー SC_Plugin_Installer::execPlugin() - SQLの構文チェック - SQLエラーがある場合はreturn; - SQLの実行 - INSERT実行 - UPDATE実行 - ディレクトリコピー - ファイルコピー
利用イメージ
* インストーラで利用できるメソッド - sql($sql, $params) SQLを実行 - insert($table, $entity); INSERT - update($table, $entity, $where, $params) UPDATE - addColumn($table_name, $col_name, $col_type) カラム追加 - dropColumn($table_name, $col_name) カラム削除 - copyFile($src, $dist) html/plugin_code以下にコピー - copyDirectory($src, $dist) html/plugin_code以下にコピー * プラグイン側の利用イメージ install($arrPlugin, $objPluginInstaller) { // カラム追加 $objPluginInstaller->addColumn("dtb_products" ,"plg_plugin_code_hoge", "text"); // テーブル追加 $objPluginInstaller->sql( "create table plg_plugin_code_hogehugatable ( hoge_id int not null primary key hoge_name text)"); // ※ファイルのコピーは原則html/plugin/[plugin_code]/に置いてもらい、分散させないように // data/downloads/plugin/plugin_code/media/hoge.cssをhtml/plugin/plugin_code/media/huga.cssへコピー $objPluginInstaller->copyFile("media/hoge.css", "media/huga.css"); // data/downloads/plugin/plugin_code/js/以下をhtml/plugin/plugin_code/js/へコピー $objPluginInstaller->copyDirectory("js", "js"); // INSERT処理 $sqlval = array(); $sqlval['dummy'] = "test"; $objPluginInstaller->insert('plg_plugin_code_hogehugatable ', $sqlval); } uninstall($arrPlugin, $objPluginInstaller) { // カラム削除 $objPluginInstaller->dropColumn("dtb_products", "plg_plugin_code"); // テーブル削除 $objPluginInstaller->sql("drop table plg_plugin_code_hoge"); // ファイル削除 html以下はアンインストール時にまるっと削除される }
その他
インストール時のログは、ログ管理から閲覧可能(プラグインログ)
残課題
- アンインストール/有効/無効/削除も対応 - 全体の流れが追いにくくなったのでリファクタリング - ユーティリティ関数追加 - プラグイン仕様書の更新 etc
Attachments
Change History
Changed 10 years ago by h_yoshimoto
-
attachment
plugin_info2.tar.gz
added
comment:1 Changed 10 years ago by adachi
使い方:
install($arrPlugin, $objPluginInstaller) { // カラム追加 $objPluginInstaller->sql("alter table dtb_products add column plg_plugin_code_hoge text"); // テーブル追加 $objPluginInstaller->sql( "create table plg_plugin_code_hogehugatable ( hoge_id int not null primary key hoge_name text)"); // data/downloads/plugin/plugin_code/media/hoge.cssをhtml/plugin/plugin_code/media/huga.cssへコピー $objPluginInstaller->copyFile("media/hoge.css", "media/huga.css"); // data/downloads/plugin/plugin_code/js/以下をhtml/plugin/plugin_code/js/へコピー $objPluginInstaller->copyDirectory("js", "js"); }
Changed 10 years ago by h_yoshimoto
-
attachment
CategoryContents_error.tar.gz
added
エラー出るプラグインをアップデート
comment:8 Changed 10 years ago by h_yoshimoto
- Milestone changed from EC-CUBE2.13.0 to EC-CUBE2.13 開発合宿
comment:10 Changed 10 years ago by h_yoshimoto
- Milestone changed from EC-CUBE2.13 開発合宿 to EC-CUBE2.13.0
comment:11 Changed 10 years ago by h_yoshimoto
- Status changed from new to closed
- 修正済み set
- Resolution set to 修正済
Note: See
TracTickets for help on using
tickets.
エラー出るプラグイン