Студия разработки сайтов и приложений

Netspark.ru

Заметки и разработки

Drupal

Message Queue API

Как известно, в Друпале для внезапного показа пользователям сообщений от системы есть функция — drupal_set_message(). Однако, к сожалению, эта функция умеет выставлять сообщения только для показа текущему пользователю. А иной раз хотелось бы отправить системное сообщение другому пользователю, чтобы он увидел его сразу, как только появится на сайте. И чтоб сообщение не пропало, а смиренно ждало прихода своего адресата.

С этой целью быстренько набросал крохотный модуль Message Queue API. Модуль предоставляет разработчику функцию:

function message_queue_api_set_message($message, $uid);

Сообщение, переданное с помощью данной функции, немедленно сохраняется в базу данных. Затем модуль следит (с помощью hook_init()), нет ли для текущего пользователя в базе сообщений. И как только адресат зайдет на сайт, в hook_init() все адресованные ему сообщения будут считаны из базы и выставлены через drupal_set_message(). Примерно вот так:

Из базы показанные сообщения будут, естественно, удалены.

Собственно, модуль еще очень маленький (кода — на две страницы) и кроме описанного больше ничего не делает. Но в дальнейшем планирую сделать некоторые улучшения, такие как:

  • вывод не более N сообщений за раз;
  • возможность выставлять сообщения разного типа (статусы drupal_set_message);
  • возможность выставлять сообщения с аяксифицированной кнопкой «Ок» (или «Убрать», или с крестиком), которые не исчезнут, пока адресат на кнопку не нажмет.
  • стандартный триггер-экшн отправки сообщения.

Кроме того, предлагаю дорогим читателям:

  • поделиться, если кто использует другие, упущенные мной модули, успешно решающие задачу отправки системного сообщения заданному пользователю, или альтернативные средства решения (кроме электрической почты);
  • предложить любые идеи по улучшению модуля;
  • сообщить, пригодился бы вам такой модуль в принципе (если нет — можно не сообщать).

Ну и конечно можно просто скачать модуль:
Messages Queue API 0.2

Комментарии