Где лучше всего разместить дополнительные функции выхода из системы?


Чтобы вставить дополнительную логику при выходе пользователя из системы, можно посмотреть function user_logout() в user.pages.inc. Этот код находится в основном модуле, вы не должны его редактировать, но он работает очень хорошо... например, добавив следующий код в начало функции "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));  
}

... Я очищаю кэш и запускаю cron, если cron не запускался в течение последних 24 часов. Ладно, не идеально подходит для cron, но это другая проблема.

Где лучше всего добавить это небольшое фрагмент? Я мог бы просто реализовать свой собственный пункт меню выхода из системы... но я не в восторге от этого решения.

Заранее благодарю.

Author: kiamlaluno, 2011-03-04

2 answers

Вместо изменения ядра вы можете реализовать hook_user() в пользовательском модуле. Затем вы можете проверить параметр $op, чтобы узнать, равен ли он "выходу". Этот код будет выполняться всякий раз, когда пользователь выходит из системы, независимо от того, какой пункт меню или ссылку он нажимает для выхода.


Обратите внимание, что это отличается между Drupal 6 и 7. Этот вопрос был помечен как Drupal 6, но если вы используете Drupal 7 или планируете использовать его позже, имейте в виду, что этот крючок был заменен на hook_user_logout().

 10
Author: Chaulky, 2011-03-04 01:18:23

Возможно, вам захочется проверить модуль Cron для бедных.

 0
Author: mikeytown2, 2011-03-10 10:39:30