Тригеры и Действия (actions and triggers)

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

Аватар пользователя yasik yasik 28 декабря 2008 в 12:15

Добрый день,
Столкнулся с такой проблемою, делаю action сменить автора материала на другого,
вещаю на событие удаление пользователя. Удаляю пользователя, смотрю на результат
автор материала - гость. Action не сработал захожу в журнал операции на сайте
написано пользоваель был сменен на другого указан логин этого другого, а по факту это не
произошло при этом ни каких ошибок не выдается.

где грабли ? или где посмотреть где грабли, куда копать ?

Комментарии

Аватар пользователя neochief neochief 28 декабря 2008 в 17:35

"yasik" wrote:
или где посмотреть где грабли, куда копать

Скорее всего, рыть надо файл workflow.module Wink

Отловите баг, сделайте фикс, залейте патч на drupal.org. Я вполне серъезно, здесь нет ничего тяжелого, а всем поможете. Если сделаете и будут вопросы, как сделать патч, я смогу объяснить.

Вот вам, как пример для подражания - http://drupal.org/node/349316

Аватар пользователя yasik yasik 29 декабря 2008 в 2:53

у меня нет workflow.module Action не указывал его как зависимый я и не ставил

Приятно когда обо мне такого высокого мнения напишите патч Smile Я бы и написал, но к сожалению у меня не хватает знаний чтобы найти в каком месте ошибка и чем ее ловить Sad
вопрос №1 как и чем ловить? можно направить в сторону мануала

Аватар пользователя neochief neochief 29 декабря 2008 в 15:50

Ой, я сказал workflow? Я имел в виду совсем другое, видимо больше спать надо. Нам надо найти реализацию экшена смены автора и отдебажить ее. Все екшены определяются внутри соответствующих модулей. Данный экшен — это экшен модуля node. Ищем там реализацию hook_action_info и в нем информацию как называется функция нашего экшена. Найдя, идем к ней и пытаемся понять что именно глючит.

Как узнать что именно глючит? Выставляем прямо в коде функции
drupal_set_message(print_r($your_variable, 1)), что будет выводить переменную $your_variable каждый раз, когда код будет проходить в данном месте. Проверяем, все ли приходит в функцию, и все ли уходит из нее правильно.

Как определить что правильно, что нет? Делаем аналогичный экшен, который работает, и смотрим на его вход/выход.

Если проблема не проявилась на этом шаге, идем дальше по цепочке выполнения. Как только вызвана функция хука, она передает значения.

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