web-dev-qa-db-ja.com

追加のログアウト機能を挿入するのに最適な場所はどこですか?

ユーザーがログオフするときに追加のロジックを挿入するには、user.pages.incのfunction user_logout()を調べます。このコードはコアモジュール内にあるため、編集しないでください。ただし、非常にうまく機能します。たとえば、次のコードを 'user_logout()'関数の先頭に追加すると...

$last_run = variable_get('cron_last', 0);  
if(time() - $last_run > 86400) {  
    include_once './includes/bootstrap.inc';  
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);  
    drupal_cron_run();  
    drupal_flush_all_caches();  
    watchdog('user', 'cron set to run and cache to be cleared on user logout', array('%name' => $user->name));  
}

...過去24時間にcronが実行されていない場合は、キャッシュをクリアしてcronを実行します。わかりました、cronには理想的ではありませんが、それは別の問題です。

この小さなスニペットを追加するのに最適な場所はどこですか?独自のログアウトメニュー項目を単純に実装することもできますが、その解決策にはあまり興味がありません。

前もって感謝します。

2
clsturgeon

コアを変更する代わりに、カスタムモジュールに hook_user() を実装できます。次に、_$op_パラメーターをチェックして、「logout」と等しいかどうかを確認できます。このコードは、ユーザーがログアウトするためにクリックするメニュー項目またはリンクに関係なく、ユーザーがログアウトするたびに実行されます。


これはDrupal 6と7で異なることに注意してください。この質問にはDrupal 6のタグが付けられていますが、Drupal 7を使用している場合、または後で計画する場合は、このフックが hook_user_logout() に置き換えられたことに注意してください。

10
Chaulky

Poor Mans Cron モジュールをチェックアウトしたいと思うかもしれません。

0
mikeytown2