Нужна помощь! Снять материалы с публикации если изменилась роль пользователя Rules+VBO

Главные вкладки

Аватар пользователя lexxxman lexxxman 21 сентября 2012 в 14:38

Доброго времени суток.

Очень нужна помощь!!!!
Помогите собрать пазл из VBO + rules. Уверен, что нужно не только мне. После решения задачи, размещу пошаговый мануал со скринами.

Текущее состояние:
Есть пользователь (test1) с ролями: Role basic и Role extended (разницей в привилегиях можно пренебречь).
Есть два типа материала Content type 1 и Content type 2.
Пользователь test1 имеет по одному материалу (в данном примере) каждого из двух типов материалов. Итого два материала, которые принадлежат пользователю test. Предположим, что оба материала опубликованы.

Действие человека первое: админ лишает пользователя test1 привилегий роли Role extended, т.е. test1 остается с правами роли Role basic.
Реакция системы 1 на "Действие человека первое", в пункте выше, должна быть следующая:
0. Письмо пользователю о том, что он лишен привилегий роли Role extended (не объязательно, но хотелось бы)
1. Найти только все ОПУБЛИКОВАННЫЕ материалы пользователя test1
2. Назначить flag типа "Unpublished by system" каждому материалу из полученного списка в п.1
3. Снять с публикации все материалы из списка полученного в п.1
4. Отправить письмо пользователю со списком элементов снятых с публикации в п.1 (не обязательно, но хотелось бы). Можно совместить с пунктом 0 (ноль).
Дополнительное условие: Список в п.1 может быть пустой, но письмо об исключении из роли Role extended должно отправиться.

Действие человека второе: админ снова добавляет пользователя test1 в роль Role extended.
Реакция системы 2 на "Действие человека второе" должна быть следующая:
1. Найти все снятые с публикации материалы пользователя test1 с флагом "Unpublished by system"
2. Опубликовать материалы из полученного списка в п.1 и убрать флаг "Unpublished by system"
3. Отправить письмо пользователю со списком элементов вновь опубликованных из списка в п.1 (не обязательно, но хотелось бы) и сообщить о добавлении привилегий роли Role extended.
Дополнительное условие: Список в п.1 может быть пустой, но письмо о давлении к роли Role extended должно отправиться.

Имеем ПО:
Drupal 7.15 (чистый)
Ctools 7.x-1.2
Entity 7.x-1.0-rc3
i18n 7.x-1.7
rules 7.x-2.2
Views 7.x-3.5
Views Bulk Operations (VBO) 7.x-3.0
Flag 7.x-2.0

Прогресс на данный момент:
1. Создал view 1, который отображает все опубликованные ноды для пользователя + VBO. Фильтрация Uid берется из поля contextual filters.
2. Создал компонент в rules с плагином Action set.
добавил action: Load a list of entity objects from a VBO view и вот тут загвоздка. На странице создания action нужно добавить аргумент, чтобы подставлял его для получения списка материалов для определенного пользователя, но я не знаю какой token ввести.
3. Потом нужно создать loop с функцией снятия с публикации по полученному списку. тут вроде не сложно.

Вопрос 1: Можно ли с таким комплектом ПО выполнить поставленную задачу? Если нужны доп модули, подскажите какие?
Вопрос 2: Как добавить uid как аргумент для action в rules?
Вопрос 3: ход моих мыслей правильный или где-то ошибаюсь? Может это все проще можно реализовать?

Заранее благодарен всем, кто отозвался!