function _trigger_node in Drupal 7
Calls action functions for node triggers.
Parameters
$node: Node object.
$hook: Hook to trigger.
$a3: Additional argument to action function.
$a4: Additional argument to action function.
5 calls to _trigger_node()
- trigger_node_delete in modules/
trigger/ trigger.module - Implements hook_node_delete().
- trigger_node_insert in modules/
trigger/ trigger.module - Implements hook_node_insert().
- trigger_node_presave in modules/
trigger/ trigger.module - Implements hook_node_presave().
- trigger_node_update in modules/
trigger/ trigger.module - Implements hook_node_update().
- trigger_node_view in modules/
trigger/ trigger.module - Implements hook_node_view().
File
- modules/
trigger/ trigger.module, line 267 - Enables functions to be stored and executed at a later time.
Code
function _trigger_node($node, $hook, $a3 = NULL, $a4 = NULL) {
// Keep objects for reuse so that changes actions make to objects can persist.
static $objects;
// Prevent recursion by tracking which operations have already been called.
static $recursion;
$aids = trigger_get_assigned_actions($hook);
if (!$aids) {
return;
}
if (isset($recursion[$hook])) {
return;
}
$recursion[$hook] = TRUE;
$context = array(
'group' => 'node',
'hook' => $hook,
);
// We need to get the expected object if the action's type is not 'node'.
// We keep the object in $objects so we can reuse it if we have multiple actions
// that make changes to an object.
foreach ($aids as $aid => $info) {
$type = $info['type'];
if ($type != 'node') {
if (!isset($objects[$type])) {
$objects[$type] = _trigger_normalize_node_context($type, $node);
}
// Since we know about the node, we pass that info along to the action.
$context['node'] = $node;
$result = actions_do($aid, $objects[$type], $context, $a3, $a4);
}
else {
actions_do($aid, $node, $context, $a3, $a4);
}
}
unset($recursion[$hook]);
}