function rules_action_data_set
Action: Modify data.
Related topics
1 string reference to 'rules_action_data_set'
- rules_data_action_info in modules/
data.rules.inc - Implements hook_rules_action_info() on behalf of the pseudo data module.
File
-
modules/
data.eval.inc, line 15
Code
function rules_action_data_set($wrapper, $value, $settings, $state, $element) {
if ($wrapper instanceof EntityMetadataWrapper) {
try {
// Update the value first then save changes, if possible.
$wrapper->set($value);
} catch (EntityMetadataWrapperException $e) {
throw new RulesEvaluationException('Unable to modify data "@selector": @message', array(
'@selector' => $settings['data:select'],
'@message' => $e->getMessage(),
));
}
// Save changes if a property of a variable has been changed.
if (strpos($element->settings['data:select'], ':') !== FALSE) {
$info = $wrapper->info();
// We always have to save the changes in the parent entity. E.g. when the
// node author is changed, we don't want to save the author but the node.
$state->saveChanges(implode(':', explode(':', $settings['data:select'], -1)), $info['parent']);
}
}
else {
// A not wrapped variable (e.g. a number) is being updated. Just overwrite
// the variable with the new value.
return array(
'data' => $value,
);
}
}