スタッフブログ

  • カテゴリ 総合的な情報 の最新配信
  • RSS

CubeCakeを使う場合に注意する点 その1

 : XOOPS » 総合的な情報 2008/11/21 14:26

Blogger's Avatar

satoです。

弊社では、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();


---

紹介できる内容が用意できたらまた紹介したいと思います。
まだいくつか問題がありますが、便利なので是非試してみてください。

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.