Drupal Rules

22 августа 2011

Плагин Rules очень мощный инструмент, позволяющий в СМS Drupal управлять событиями и действиями. Поначалу я не оценил его, как следует. Но потихоньку, потихоньку я его начал осваивать. И столкнулся с проблемой, серьезной проблемой.

Как оказалось, этот плагин выводит результат своей работы на страницу, с которой он запущен. Выводит всем, и простым пользователям тоже. Что выглядит очень и очень некрасиво, да и простым пользователям это не надо! Я пытался найти решение в гугле: "Как не показывать сообщения простым пользователям в Drupal", но так и не нашел. В админке друпала на этот счет нет ни одной строчки - возможно, я плохо искал и мой глаз замылился. Пришлось посмотреть код плагина rules. Кода там много, но мне необходимо всего-то убрать вывод сообщений типа - "0 ms "После сохранения нового контента" has been invoked."

В системе Drupal 6 за вывод сообщений отвечает функция drupal_set_message. Вот я поиском и прошелся по коду плагина Rules. И сразу в глаза бросилась функция:
function rules_show_log() {
global $_rules_log, $_rules_log_error;

if (!empty($_rules_log) && (!empty($_rules_log_error) || variable_get('rules_debug', FALSE))) {
$i = 0;
$msg = _rules_show_log($i, $_rules_log, $error);

if ($_rules_log_error) {
rules_handle_error_msg('An error occured during rule evaluation. It follows the evaluation log: !log', array('!log' => $msg));
}
else {
drupal_set_message($msg);
}
$_rules_log = NULL;
$_rules_log_error = NULL;
}
}

Вывод информационных сообщений, которые вовсе не должны быть доступны для простого пользователя, происходит в этой функции. Эта функция описана в rules.module. И я поступил не по-джедайски, взял и заменил код этой функции, точнее, всего одну строку:
было - drupal_set_message($msg);
стало - drupal_set_message('');

И сообщения перестали появлятся. Конечно, они перестали выводиться на страницу у всех пользователей, в том числе и админов. Но я посчитал это меньшим злом. Конечно, необходимо помнить при обновлении плагина Rules, что и где поменял. А лучше все-таки отыскать то место, где отключаются информационные сообщения для этого плагина!

Андрей Лебедев

,

, , , ,

Комментарий

Нет комментарий.

Комментировать: