Как отобразить пользовательское сообщение для пользователя, когда другой модуль выходит из него в результате module_invoke_all? - PullRequest
1 голос
/ 02 апреля 2012

У меня есть модуль тайм-аута, который регистрирует пользователя, если он неактивен. Проблема в том, что модуль вызывает module_invoke_all ('user_logout', $ user); и другой модуль завершает регистрацию пользователя, поскольку этот модуль фактически отображает правильную целевую страницу выхода из системы.

Как я могу заставить мой модуль отображать сообщение на другой странице выхода? Кроме того, drupal_set_message не будет работать, так как пользователь выйдет из системы, и способ работы drupal_set_message заключается в том, что у вас должен быть соответствующий сеанс под рукой.

Пожалуйста, дайте мне знать ваши мысли

Спасибо

1 Ответ

0 голосов
/ 01 декабря 2014

В hook_user_logout установите cookie с сообщением, которое вы хотите отобразить

<?php
setcookie('my_message', t("Goodbye, have a nice evening!"), time() + (86400 * 30), "/");
?>

... затем в hook_init отобразите все, что есть в cookie, и удалите cookie

<?php

function MYMODULE_init() {
  if(!empty($_COOKIE['my_message'])) {
    drupal_set_message($_COOKIE['my_message']);
    setcookie('my_message', '', time() - 3600);
  }
}
?>
...