MEMBERクラスはメンバー、およびそのログイン状況を管理するクラスです。v3.24現在、このクラスはnucleus/libs/MEMBER.phpで定義されています。
間違い、補足など、お気付きの点がありましたら、積極的に編集してください。プラグイン作りに必要な情報を、Wikiに集結できたら良いなと思っています。
一般に、現在Nucleusを使用しているメンバーについてのMEMBERオブジェクトは、グローバル変数$memberで参照できます。
それ以外のメンバーについては、MEMBER::createFromName()またはMEMBER::createFromID()を使用してください。
メンバーに与えられる権限には複数のものがあります。
| 権限の種類 | チェックするメソッド | 設定するメソッド |
|---|---|---|
| 最高管理者権限 | MEMBER::isAdmin() | MEMBER::setAdmin() |
| ブログの管理者権限 | MEMBER::isBlogAdmin() | BLOG::addTeamMember() ACTION::action_batchmember() |
| チームのメンバー | MEMBER::isTeamMember() | BLOG::addTeamMember() ACTION::action_batchmember() |
| 管理者画面にログインできる権限 | MEMBER::canLogin() | MEMBER::setCanLogin() |
アクティベートは新規メンバー登録、パスワードの再発行、メールアドレスの変更について必要になります。アクティベートされていないメンバーは管理画面へのログインができません。
一般に、専用のURLにメンバーが一定期間内に訪問することでアクティベートが完了します。
アクティベートの種類による動作の違いは以下のとおりです。
| アクティベートの種類 | typeの値 | extraの値 | MEMBER::generateActivationEntry()によるアクティベーション解除 | アクティベート期限切れ時の動作 |
|---|---|---|---|---|
| 新規メンバー登録 | register | 省略可 | 解除 | メンバー削除 |
| パスワードを忘れた | forgot | 省略可 | 解除されず | 何もなし |
| メールアドレスの変更 | addresschange | いままでのメールアドレス | 解除 | 今までのメールアドレスのままアクティベートされる |
MEMBER MEMBER::createFromName(string displayname)
名前(displayname)に対応したMEMBERオブジェクトへの参照を返す
displaynameに対応したMEMBERオブジェクトへの参照を返します。
コールされるたびにMEMBER::readFromName()を実行してデータベースから情報を読み込みます。
対応するMEMBERが存在しない場合でもMEMBERオブジェクトへの参照は返されます。
MEMBER MEMBER::createFromID(int id)
メンバーIDに対応したMEMBERオブジェクトへの参照を返す
メンバーIDに対応したMEMBERオブジェクトへの参照を返します。
コールされるたびにMEMBER::readFromID()を実行してデータベースから情報を読み込みます。
対応するMEMBERが存在しない場合でもMEMBERオブジェクトへの参照は返されます。
int MEMBER::readFromName(string displayname)
名前(displayname)をもとにデータベースから情報を読み込む
displaynameに対応したデータベースの情報を読み込み、メンバ変数にセットします。
返り値は該当するデータが存在した場合1、存在しなかった場合0になります。
このメソッドは、スタティックにコールすることはできません。
int MEMBER::readFromID(int id)
メンバーIDに対応したデータベースの情報を読み込み、メンバ変数にセットします。
返り値は該当するデータが存在した場合1、存在しなかった場合0になります。
このメソッドは、スタティックにコールすることはできません。
int MEMBER::login(string login, string password)
引数loginで渡されたdisplaynameを持つメンバーについて、パスワードにpasswordを使ってログインします。
パスワードのチェックだけを行いたい場合は、MEMBER::checkPassword()を使って行うことができます。
コールされるたびにMEMBER::readFromName()を実行してデータベースから情報を読み込みます。
$member =& new MEMBER(); $login = 'name'; $pw = 'pass'; $member->login($login,$pw);
ログインに成功した場合は1が返ります。ログインに失敗した場合は0が返り、ログインしていた場合はログアウトされます。
このメソッドは、スタティックにコールすることはできません。
int MEMBER::cookielogin(string login, string cookiekey)
引数loginで渡されたdisplaynameを持つメンバーについて、cookiekeyを使ってログインします。
cookiekeyはログイン状態を保存するためにcookieに保持されている文字列です。cookieにはloginに使う値(メンバーのdisplayname)も保存されています。
cookiekeyのチェックだけを行いたい場合は、MEMBER::checkCookieKey()を使って行うことができます。
コールされるたびにMEMBER::readFromName()を実行してデータベースから情報を読み込みます。
global $CONF; $member =& new MEMBER(); $member->cookielogin(cookieVar($CONF['CookiePrefix'] .'user'), cookieVar($CONF['CookiePrefix'] .'loginkey'));
ログインに成功した場合は1が返ります。ログインに失敗した場合は0が返り、ログインしていた場合はログアウトされます。
このメソッドは、スタティックにコールすることはできません。
int MEMBER::isLoggedIn()
メンバーがログインしているかどうかチェックします。
ログインしている場合は1が、そうでない場合は0が返ります。
このメソッドは、スタティックにコールすることはできません。
int MEMBER::read(string where)
whereで与えられた条件に合致するデータをメンバ変数に代入します。
また、条件に合致したメンバーの数を返します。
function readFromID($id) { return $this->read("mnumber=" . intval($id)); }
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::isBlogAdmin(int blogid)
メンバーが与えられたblogidをIDに持つブログについて、管理者権限を持っているかどうかをチェックします。
管理者権限を持つ場合はtrueが、そうでない場合はfalseか0が返されます。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::blogAdminRights(int blogid)
ブログまたはサイトの管理者権限を持っているかどうかチェックする
メンバーが与えられたblogidをIDに持つブログの、もしくはサイト全体の、いずれかの管理者権限を持っているかをチェックします。
少なくとも1種類の管理者権限を持っている場合trueが、そうでない場合falseが返ります。
実際のコードは、MEMBER::isAdmin()とMEMBER::isBlogAdmin()を使って
function blogAdminRights($blogid) { return ($this->isAdmin() || $this->isBlogAdmin($blogid)); }
のように書かれています。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::teamRights(int blogid)
サイトの管理者またはチームのメンバーであるかどうかチェックする
メンバーが与えられたblogidをIDに持つブログのチームのメンバーか、もしくはサイト全体の管理者権限を持っているかをチェックします。
少なくとも1つの条件に該当する場合trueが、そうでない場合falseが返ります。
実際のコードは、MEMBER::isAdmin()とMEMBER::isTeamMember()を使って
function teamRights($blogid) { return ($this->isAdmin() || $this->isTeamMember($blogid)); }
のように書かれています。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::isTeamMember(int blogid)
メンバーが与えられたblogidをIDに持つブログのチームのメンバーかどうかをチェックします。
チームのメンバーである場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::canAlterComment(int commentid)
与えられたcommentidをもつコメントについて、メンバーが削除・編集権限があるかどうかチェックします。
削除・編集権限があるメンバーとは、
です。
権限を持つ場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::canAlterItem(int itemid)
与えられたitemidをもつアイテムについて、メンバーが削除・編集権限があるかどうかチェックします。
削除・編集権限があるメンバーとは、
です。
権限を持つ場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::canUpdateItem(int itemid, string newcat)
アイテムを別のカテゴリーに移動させることができるかどうかチェックする
引数で与えられたitemidをもつアイテムを引数newcatで与えられる別のカテゴリーに移動させる権限があるかどうかチェックします。
newcatはカテゴリーIDですが、新しいカテゴリーとしてnewcat-x(文字列でxはブログID)を用いることもできます。
権限を持つ場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::canAddItem(string catid)
引数catidで与えられたカテゴリーにアイテムを追加する権限があるかどうかチェックします。
catidはカテゴリーIDですが、新しいカテゴリーとしてnewcat-x(文字列でxはブログID)を用いることもできます。
権限を持つ場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::canBeDeleted()
メンバーを削除できるかどうかチェックします。
投稿したコメントやアイテムが残っているメンバーは削除できません。
削除できる場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::sendActivationLink(string type[, string extra])
アクティベートのためのメールを送信します。
引数についてはMEMBER::generateActivationEntry()を参照してください。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setCookies(int sharedpc)
自動ログインに使うcookieをセットします。
sharedpcが1の場合はPCを共有するセットとみなし、セッション終了まで有効なcookieをセットします。
そうでない場合は管理画面での設定に従います。
セットされるcookieの名前は以下のとおりです。(実際にはPrefixがつきます)
| 名前 | 用途 |
|---|---|
| user | ログインに使うユーザー名 |
| loginkey | ログインに使うキー(パスワードとは違い、Nucleusシステムから自動生成されるもの) |
| sharedpc | PCを共有する設定かどうか |
このメソッドは、スタティックにコールすることはできません。
array MEMBER::getAdminBlogs()
メンバーがなんらかの管理者権限を持ったブログの一覧を配列で返します。
メンバーが最高管理者権限を持つ場合は、全てのブログのIDが配列として返されることになります。
このメソッドは、スタティックにコールすることはできません。
array MEMBER::getNotifyFromMailAddress([string suggest])
通知メールを送信する際に適切だと思われるメールアドレスを返します。
返されるメールアドレスは以下の手順で決定されます。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::write()
オブジェクトの情報をデータベースに保存します。
メンバー情報は別の場所でデータベースから読み込まれる場合があるので、何らかの変更を加えた後はこのメソッドで変更を保存する必要があります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::checkPassword(string pw)
pwで与えられたパスワードが、メンバーの正しいパスワードと一致するかどうかチェックします。
一致した場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::checkCookieKey(string key)
loginkeyは自動ログイン機能実現のためにNucleusシステムが用意するランダムな文字列で、cookieとデータベースに保存されています。このメソッドはデータベースからMEMBER::readで読み込まれたloginkeyとkeyが一致するかどうかのチェックを行います。
一致した場合trueが、そうでない場合falseが返ります。
このメソッドは、スタティックにコールすることはできません。
string MEMBER::getRealName()
本名(realname)を返します。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setRealName(string name)
本名(realname)を設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
string MEMBER::getEmail()
メールアドレスを返します。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setEmail(string email)
メールアドレスを設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドはメールアドレスとして適切な文字列かどうかチェックしません。チェックにはグローバルファンクションのisValidMailAddress()が使用できます。
このメソッドは、スタティックにコールすることはできません。
string MEMBER::getPassword()
MD5エンコードされたパスワードを返します。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setPassword(string pwd)
パスワードを設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
string MEMBER::getCookieKey()
loginkeyを返します。
このメソッドは、スタティックにコールすることはできません。
string MEMBER::newCookieKey()
loginkeyを新たに作成し、MEMBER::writeでデータベースに保存します。それまでMEMBERオブジェクトに加えた変更も同時に保存されます。
このメソッドは新しく作成されたloginkeyを返します。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setCookieKey(string val)
loginkeyを設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setURL(string site)
URLを設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setLanguage(string lang)
言語を設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
string MEMBER::getDisplayName()
表示用の名前を返します。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setDisplayName(string nick)
表示用の名前を設定します。(表示用の名前はログインに使われる名前です。)
このメソッドは表示用の名前として適切な文字列かどうかチェックしません。チェックにはグローバルファンクションのisValidDisplayName()が使用できます。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::isAdmin()
最高権限管理者かどうかチェックします。
最高権限管理者ならtrueが、そうでないならfalseが返ります。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setAdmin(bool val)
最高権限管理者かどうかを設定します。
引数valがtrueなら最高管理権限がメンバーに与えられ、そうでないなら剥奪されます。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::canLogin()
管理者領域へのログインが許可されているかどうかチェックします。
許可されているならtrueが、そうでないならfalseが返ります。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setCanLogin(bool val)
管理者領域へのログインを許可するかどうかを設定します。
引数valがtrueならログインが許可され、そうでないなら禁止されます。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
void MEMBER::setNotes(string val)
備考を設定します。
データベースに変更を反映させるためにはMEMBER::writeを実行する必要があります。
このメソッドは、値が適切なものかどうかチェックしません。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::exists(string name)
指定した名前のメンバーが存在するかどうかチェックします。
存在するならtrue、そうでないならfalseが返ります。
bool MEMBER::exists(int id)
指定したメンバーIDのメンバーが存在するかどうかチェックする
指定したメンバーIDのメンバーが存在するかどうかチェックします。
存在するならtrue、そうでないならfalseが返ります。
bool MEMBER::isNameProtected(string name)
指定した名前が保護されているかどうかチェックします。
保護されている(使用できない)ならtrue、そうでないならfalseが返ります。
mixed MEMBER::create(string name, string realname, string password, string email, string url, bool admin, bool canlogin, string notes)
メンバーを作成します。
作成に成功した場合は1が返ります。エラーが発生した場合はその内容を示す文字列が返されます。
name(ログインに使われる名前)、passwordの有無、メールアドレス以外の値は適切かどうかチェックされません。名前の衝突もチェックされません。名前の衝突チェックにはMEMBER::isNameProtected()が使用できます。
作成に成功したメンバーの情報は即座にデータベースに保存されます。
mixed MEMBER::getActivationInfo(string key)
アクティベートキーに対応した情報を返します。
対応する情報がない場合は0が返ります。対応する情報があれば、それらをメンバ変数に持ったオブジェクトが返ります。メンバ変数の名前はactivationテーブルのカラム名になっています。詳しくはactivationテーブルの説明をご覧ください。
string MEMBER::generateActivationEntry(string type [, string extra])
必要があればメンバーをアクティベートされていない状態にし、アクティベートキーを作成する
必要があればメンバーをアクティベートされていない状態にし、アクティベートキーを作成しそれを返します。
アクティベーション解除されたメンバーは管理者画面にログインすることができません。
内部でMEMBER::writeを使っています。それまでMEMBERオブジェクトに加えた変更も同時に保存されます。
このメソッドは、スタティックにコールすることはできません。
bool MEMBER::activate(string key)
アクティベートキーを使ってメンバーをアクティベートします。
どのメンバーをアクティベートするかは、アクティベートキーから決定されます。
アクティベートが成功すればtrueが、そうでなければfalseが返されます。
void MEMBER::cleanupActivationTable()
アクティベート情報を保存しているテーブルを整理します。
一定時間(デフォルトでは2日)がすぎたアクティベートキーが破棄されます。