2011-03-12 6 views
0

私は最近、a Flash/Perl card gameをphpBB 3をバックエンドとしてDrupal 7に転送しましたが、うまくいきましたが、私はフォーラムを有効にすることを躊躇しています - 私の古いサイトの一部のユーザーが私を驚かせていたからです。ログイン時のユーザーロールの追加/削除Drupal以外のテーブルに基づく

私のサイトでもう一度フォーラムを提供したいと思いますが、私のサイトで十分な長さで遊んでおり、十分な評判を持っているユーザーにのみ、フォーラムを提供したいと思います。私のPerlのゲームでは、両方の情報(いくつのゲームが評判+プレイされたか)が維持され、Drupalテーブル以外のテーブル(ただし、Drupalテーブルと同じデータベース)に保存されます。そして、私はのDrupalのユーザーロール信頼できるユーザー作成しました: - ゲームがカウントされ、評判が変更されている場所 - 私は私のゲームで2つのスポットを修正することができ

# select * from drupal_role; 
rid |  name  | weight 
-----+--------------------+-------- 
    1 | anonymous user  |  0 
    2 | authenticated user |  1 
    3 | trusted user  |  2 
(3 rows) 

してから呼び出す「を挿入/から削除users_roles where uid =? '、おそらくDrupalにはより良い場所があります。ログイン時にユーザーの役割を変更する

I.e.彼の評判ゲームの数は、私の非Drupalテーブルに対する2つのクイック選択クエリによってチェックされ、信頼されたに追加(または削除され、評判が低下した場合)されます。ユーザーロールでフォーラムに書き込むことができます。

ありがとうございました! Alex

答えて

0

ユーザーの数に応じて、1ページの読み込みごとに2つのクエリを実行する代わりに、実際に必要な役割を果たすのがパフォーマンス上の方が良い場合があります。

hook_init()を使用して、グローバル$ユーザーオブジェクトにロールを追加することができます。

0

ユーザーRulesポイントを制御し、ユーザーの役割を変更します。カスタムクエリを実行するためのルールでカスタムPHPコードを実行するためのPHPフィルタモジュールも有効にします。

0

hook_user_loginをチェックしましたか?それをカスタムモジュールに入れる必要がありますが、そのフックを介してログインした後でユーザーにロールを追加することができます。

+0

こんにちはjdwfly、私はhook_user_loginを試しましたが、ユーザーが実際にパスワードを送信したときにのみ呼び出されるようです。クッキーがまだ有効なので、ユーザーがDrupal 7サイトを再訪問してもパスワードを入力する必要がない場合に利用できるフックがあります。 –

+0

Thats true、hook only fire彼らが実際にログインするときあなたはNikitのようなルールを使うことができ、ページを見たときにルールを発してからカスタムPHPを起動することができます。これは明らかにすべてのページビューで実行されるので、必要がないときにクエリを実行しないように最適化する必要があります。 – jdwfly

+0

hook_init()のように早く呼び出されたフックを使用し、global $ userを変更することができます。 – Berdir

関連する問題