スタッフブログ
satoです。
弊社では、CubeCakeという、CakePHPでXOOPS開発ができるモジュールを配布しております。
CakePHPの手軽さをモジュール開発にそのまま利用できる便利なものではあるのですが、いくつか癖がありますので、そのあたりを紹介したいと思います。
(その1 と書いてありますが、その2があるかは未定です)
・ユーザ認証
CakePHP側のACLは使うのが難しいと思います。
手軽なのは、controllers/app_controller.phpに
のようなのを用意しておくと、手軽に利用できると思います。
同様に、app_controller.phpやapp_model.phpに、XOOPSでよく使うものを組み込んでおくだけでかなり楽になります。(xoops_redirectとか)
・シェルから叩く場合
CakePHPには、vendors/shellsに、Shellクラスを継承したクラスを置くことで、シェルから叩くプログラム(バッチ処理など)を簡単に作れる機構が存在します。
しかし、これを普通にCakePHPの方法で実行すると、CakePHPだけで完結しようとしてしまうため、XOOPSの各種設定が読み込まれずにいろいろ問題が起きます。(DBの情報を取得できない等)
この場合、以下のコードをvendors/shellsに置くスクリプトの先頭に記述すると綺麗(?)にXOOPSを初期化してくれます。
(もう少しスマートな書き方にできると思うので、整備して後日本体に反映したいと思います)
---
紹介できる内容が用意できたらまた紹介したいと思います。
まだいくつか問題がありますが、便利なので是非試してみてください。
弊社では、CubeCakeという、CakePHPでXOOPS開発ができるモジュールを配布しております。
CakePHPの手軽さをモジュール開発にそのまま利用できる便利なものではあるのですが、いくつか癖がありますので、そのあたりを紹介したいと思います。
(その1 と書いてありますが、その2があるかは未定です)
・ユーザ認証
CakePHP側のACLは使うのが難しいと思います。
手軽なのは、controllers/app_controller.phpに
protected function getUser() { global $xoopsUser; return $xoopsUser; }
のようなのを用意しておくと、手軽に利用できると思います。
同様に、app_controller.phpやapp_model.phpに、XOOPSでよく使うものを組み込んでおくだけでかなり楽になります。(xoops_redirectとか)
・シェルから叩く場合
CakePHPには、vendors/shellsに、Shellクラスを継承したクラスを置くことで、シェルから叩くプログラム(バッチ処理など)を簡単に作れる機構が存在します。
しかし、これを普通にCakePHPの方法で実行すると、CakePHPだけで完結しようとしてしまうため、XOOPSの各種設定が読み込まれずにいろいろ問題が起きます。(DBの情報を取得できない等)
この場合、以下のコードをvendors/shellsに置くスクリプトの先頭に記述すると綺麗(?)にXOOPSを初期化してくれます。
(もう少しスマートな書き方にできると思うので、整備して後日本体に反映したいと思います)
if (!isset($_SERVER['REMOTE_ADDR'])) { $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; } if (!isset($_SERVER['REQUEST_METHOD'])) { $_SERVER['REQUEST_METHOD'] = 'GET'; } $xoopsOption = array(); $xoopsOption['nocommon'] = true; require_once(APP.'../../mainfile.php'); if (!isset($_SERVER['REQUEST_URI'])) { $_SERVER['REQUEST_URI'] = XOOPS_URL.'/modules/cubecake/'; } require_once XOOPS_ROOT_PATH . "/include/functions.php"; require_once XOOPS_ROOT_PATH . "/class/xoopsobject.php"; $root=&XCube_Root::getSingleton(); if(!is_object($root->mController)) exit(); $root->mController->_setupFilterChain(); $root->mController->_processFilter(); $root->mController->_setupErrorHandler(); $root->mController->_setupEnvironment(); $root->mController->_setupLogger(); $root->mController->_setupDB(); $root->mController->_setupLanguage(); $root->mController->_setupTextFilter(); $root->mController->_setupConfig(); $root->mController->_setupDebugger(); $root->mController->_processPreBlockFilter(); //$root->mController->_setupSession(); //$root->mController->_setupUser(); $root->mController->setupModuleContext(); $root->mController->_processModule(); $root->mController->_processPostFilter();
---
紹介できる内容が用意できたらまた紹介したいと思います。
まだいくつか問題がありますが、便利なので是非試してみてください。