Legacy User Get Current User;ja
From xoopscube
Contents |
LegacyとCubeにおけるカレントユーザの取得方法例
Legacy スタイル
もっともシンプルな方法はグローバル変数を使用する方法です。.
global $xoopsUser;
しかし、この方法はオブジェクト指向プログラミングのスタンダードとはいえません。そこで、Legacyでは次の方法を公式なものとしています。
$root =& XCube_Root::getSingleton(); $xoopsUser =& $root->mContext->mXoopsUser;
$xoopsUserはいつも必ずオブジェクト形だとは限らない点に留意してください。カレントユーザがログインしていない場合$xoopsUser はnullになります。この仕様は、XOOPS2からの伝統的な理由によるものです。そして、この仕様はユーザがログインしているか否かの判断材料には適していません。
$root =& XCube_Root::getSingleton();
$xoopsUser =& $root->mContext->mXoopsUser;
if (!is_object($xoopsUser)) {
...
}
uidを取得する(XCL2.2)
Legacy_Utils::getUid()
でカレントユーザのuidを取得できます。このとき、ログインしていないユーザの場合は0が返ります。
Cube スタイル
$root =& XCube_Root::getSingleton(); $user =& $root->mContext->mUser;
この$userは、明示的な方法でユーザのロールを確認することができるインターフェイスを実装しているプリンシパルオブジェクトです。しかし、Legacyでは、このプリンシパルオブジェクトはプロフィール情報(ユーザ名や出身地・趣味など)を持っていません。
XOOPS Cubeのレイヤーは常にコンテクストオブジェクトを通してプリンシパルオブジェクトを提供します。なので、プリンシパルオブジェクトがnullかどうかを確認する必要はありません。
