ここでは BcAddonMigrator を利用して、baserCMS4のプラグインを baserCMS5用に変換する手順を説明します。
BcAddonMigratorプラグインは、baserCMS4から、baserCMS5への移行をサポートするプラグインです。
baserCMS5では、かなりの大きな仕様変更が入っており、完全に自動変換することはできませんが、BcAddonMigratorプラグインを利用することで、手作業で変更する負担をかなり軽減することができます。
OSの機能やツールを使って既存のプラグインをZIP化します。
既存のサイトをそのままbaserCMS5系にアップグレードすることはできません。新しい環境にbaserCMS5をインストールしておく必要があります。
GitHub 、または、baserマーケット 、もしくは、composer より、BcAddonMigratorプラグインを取得し、新しい環境の /plugins/
フォルダに配置します。
その後、プラグイン管理よりインストールを実行します。
プラグイン一覧より、BcAddonMigratorプラグインの右側にある歯車マークををクリックします。
既存の環境のZip化したプラグインをアップロードすると変換が始まります。baserCMS5用への変換が完了するとダウンロードボタンが表示されますのでダウンロードします。
baserCMS5.1系より、/src/Plugin.php
の名称が {YourPluginName}Plugin.php
形式に変更されたため、対象プラグインの Plugin クラスの名称によって変換処理を振り分けるようになりました。
問題が発生した場合は、ユーザーズフォーラム に報告するか、GitHubのIssue を作成してください。
新しい環境の、/plugins/
に、ダウンロードしたプラグインを解凍して、配置します。
その後、管理システムの「プラグイン管理」よりインストールします。
動作を確認して問題がなければ、これで、baserCMS4のプラグインをbaserCMS5用の環境に移行することができました。お疲れ様でした。
問題が発生していたら、プラグインを問題の内容に合わせて修正します。
以下に、手動による調整についてポイントを記載しています。
残念ながらフィードプラグインは、baserCMS5では廃止となりました。利用されていた場合は、別のライブラリをご利用ください。
インストール用のスキーマは、マイグレーションの仕組みへと変更となりました。
スキーマファイルをマイグレーションファイルへと変換する必要があります。自動変換の仕組みはありませんので次のページを参考に手動で変換してください。
プラグイン配下の /config/Migrations/
に、変換したマイグレーションファイルを配置しておくと、プラグインのインストール時に自動でマイグレーションが実行されます。
プラグインのインストール時に実行されていた /config/init.php
は廃止になりました。/src/Plugin.php
の install メソッドへ移行します。
class Plugin extends \BaserCore\BcPlugin
{
public function install($options = [])
{
// 初期化処理を記述
}
}
/config/setting.php
は、$config
の定義でなく 配列をリターンするように変更となりました。
return [
'BcBlog' => [
'setting1' => 'value1',
]
];
管理システムで利用する admin
プレフィックス付きのメソッドは、namespace が Controller/Admin
に変更となったため、BcAddonMigratorプラグインでは、メソッドを自動で移動しています。
// 変更前
// /Controller/UsersController.php
class UsersController extends AppController
{
public function admin_index()
{
// 管理システムのユーザー一覧
}
}
// 変更後
// /Controller/Admin/UsersController.php
class UsersController extends BcAdminAppController
{
public function index()
{
// 管理システムのユーザー一覧
}
}
ただし、メソッド内で呼び出しているメソッドは自動で移動できませんので、必要に応じて移動してください。
DB設計書 を参考にし、必要に応じてエンティティのプロパティ名の変更を行います。
find文で利用するモデル名は、単数形から複数形へと変更となりました。
// 変更前
$users = $this->User->find('all', [
'conditions' => ['User.id' => 1]
]);
// 変更後(元の記述方式も使える)
$users = $this->Users->find('all', [
'conditions' => ['Users.id' => 1]
]);
// 変更後(新しい記述方式)
$users = $this->Users->find()
->where(['Users.id' => 1]);
自分で解決できない場合は、ユーザーズフォーラム に相談するか、GitHubのIssue を作成してください。
例えば、コードの置換処理で追加したいものがある場合は、GitHubでプルリクエストを送信してください。Issueの作成でも構いません。
一緒にコードを育てる事で他の人も喜びます。
こちらも合わせてご覧ください。