I am writing a Drupal module (filemaker) and defined some custom triggers. The triggers show up just fine, but say 'No available actions for this trigger.' at admin/build/trigger/filemaker.
Any idea how to make actions available for my trigger?
Thanks in advance.
/**
* Implementation of hook_hook_info().
*/
function filemaker_hook_info() {
return array(
'filemaker' => array(
'filemaker' => array(
'create' => array(
'runs when' => t('After creating a FileMaker record'),
),
'update' => array(
'runs when' => t('After updating a FileMaker record'),
),
),
),
);
}
/**
* Implementation of hook_filemaker().
*/
function filemaker_filemaker($op, $node) {
$aids = _trigger_get_hook_aids('filemaker', $op);
$context = array(
'hook' => 'filemaker',
'op' => $op,
'node' => $node,
);
actions_do(array_keys($aids), $node, $context);
}
[...]
// Fire off the hook.
module_invoke_all('filemaker', 'create', $node);
[...]
Got it. Found the answer here.
Needed a hook_action_info_alter().
/**
* Implementation of hook_action_info_alter().
*/
function filemaker_action_info_alter(&$info) {
// Loop through each action.
foreach ($info as $type => $data) {
// Only add our trigger to node or system actions.
if (stripos($type, "node_") === 0 || stripos($type, "system_") === 0) {
// Don't remove any triggers that are already added to the approved list.
if (isset($info[$type]['hooks']['application'])) {
$info[$type]['hooks']['filemaker'] = array_merge($info[$type]['hooks']['filemaker'], array('create', 'update'));
}
// Add our trigger to the approved list of hooks.
else {
$info[$type]['hooks']['filemaker'] = array('create', 'update');
}
}
}
}