スタッフブログ
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();
---
紹介できる内容が用意できたらまた紹介したいと思います。
まだいくつか問題がありますが、便利なので是非試してみてください。
トラックバック



