учетная запись пользователя правил drupal не изменилась

Я использую Drupal 7 + Rules 2 и хотел бы создать правило, которое показывает пользователю сообщение, когда его роль изменилась с одной роли на другую. Я экспериментировал с использованием «без изменений учетной записи» в условии сравнения данных, но мне не повезло. Моя конфигурация приведена ниже, однако использование «неизмененной» функции мне чуждо, и я не уверен, что нахожусь на правильном пути.

  • СОБЫТИЕ: После обновления существующей учетной записи пользователя
  • CONDITION:
    • Data Comparison - account-unchanged:roles equals RoleA
    • Сравнение данных — учетная запись: роли равны RoleB
  • ДЕЙСТВИЕ: Показать сообщение на сайте=Роль изменена!!!

Как указывалось ранее, это не дало никаких результатов при обновлении пользователя с ролью A до роли B, а в отладчике правил условия всегда оцениваются как FALSE.

Если есть альтернативный/лучший способ сделать это, чем указано выше, я был бы признателен за то, что меня перевели на правильный путь :)

Большое спасибо!


person areikiera    schedule 11.09.2013    source источник


Ответы (2)


Смог ответить на свой вопрос!

  • СОБЫТИЕ: После обновления существующей учетной записи пользователя
  • CONDITION:
    • Data > List contains item - LIST: account-unchanged:roles, ITEM RoleA
    • Данные> Список содержит элемент - СПИСОК: учетная запись: роли, ПУНКТ РольB
  • ДЕЙСТВИЕ: Показать сообщение на сайте=Роль изменена!!!

Если вы специально хотите сообщение, когда роль была изменена с одной на другую, а не просто добавлена, добавьте еще одно условие, но ОТРИЦАТЬ его. В моем примере я бы добавил:

  • Данные> Список содержит элемент - СПИСОК: учетная запись без изменений: роли, ПУНКТ РольB (отметьте НЕГАТИВ)
  • Данные> Список содержит элемент - СПИСОК: учетная запись: роли, ПУНКТ РольA (отметьте НЕГАТИВ)

См. https://groups.drupal.org/node/94379#comment-631148 для справки. Я сосредоточился на ответе VBO и использовал этот комментарий в сочетании с этим подходом, и у меня все еще были проблемы. Только сейчас подумал посмотреть на это самостоятельно... и вуаля!

Надеюсь, это кому-нибудь поможет!

person areikiera    schedule 11.09.2013

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

  • Данные> Список содержит элемент - СПИСОК: учетная запись без изменений: роли, ПУНКТ РольA
  • Данные> Список содержит элемент - СПИСОК: учетная запись: роли, ПУНКТ РольB (отметьте НЕГАТИВНО)

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

person Michael Hall    schedule 03.12.2014