Executar programaticamente um conjunto de ações (módulo Regras)

23

Desejo usar a interface do usuário de regras para definir alguns conjuntos de ações, mas quero executar essas ações programaticamente a partir de um módulo personalizado.

Como executar a ação por código e passar os argumentos necessários (apenas um nó neste caso).

Obrigado!

valderama
fonte

Respostas:

26

Se você o configurou como um componente de regras, pode usar como rules_invoke_componentalternativa, você pode chamar um evento, o que pode disparar várias regras usando rules_invoke_event.

Ambos são semelhantes, pois você passa primeiro um nome / id e o restante dos argumentos é passado adiante, então algo como

 rules_invoke_component('name', $node);

se sua regra de componente personalizado tiver vários parâmetros, passe-os um por um e separe-os com vírgula como exemplo

rules_invoke_component('rules_save_search_send_activation_sms',  'paramval1', 'paramval2', ....);

é corretamente como você precisa fazer isso. Isso depende novamente de como a regra / componente é definida e configurada.

googletorp
fonte
Obrigado, essa era exatamente a função que eu estava procurando. Eu tive que passar o argumento diretamente - provavelmente porque só tenho um argumento configurado no componente. rules_invoke_component('rules_mycomponent', $node);
Valderama 17/05
@ valderama, ótimo Atualizei minha resposta caso outras pessoas precisem das mesmas informações.
googletorp
Isso funciona para o drupal 6?
As regras do @landing mudaram muito de 6 para 7, mas rules_invoke_eventexiste em 6 rules_invoke_component, mas não acredito que as regras em 6 tenham o conceito de componentes.
googletorp
Se você tem costume regra compoent, passar parâmetros, um por um e separá-los com o exemplo vírgularules_invoke_component('rules_save_search_send_activation_sms', 'test ', '93333333333');
Yusef