function webform_rules_data_type_webform_data::save in Webform Rules 6
Makes changes to the data permanent. Implement it, if your data type is savable.
Overrides rules_data_type::save
File
- ./
webform_rules.rules.inc, line 146 - Functions for rules integration.
Class
- webform_rules_data_type_webform_data
- Defines the webform_data type
Code
function save() {
$changed = FALSE;
// Get eventually modified data.
$submission =& $this
->get();
if (!$submission || !is_array($submission)) {
// No data found.
return FALSE;
}
$sid = $submission['sid'];
// Load saved submission data.
$saved_submission = $this
->load($sid);
if (count($saved_submission) != 1) {
// No submission found with given id.
return FALSE;
}
$new_submission = $saved_submission[$sid];
$node = node_load($new_submission->nid);
if (!$node) {
// Webform could not be loaded.
return FALSE;
}
// Replace saved submission data with modified values.
foreach ($submission['components'] as $key => $value) {
$cid = $value['component']['cid'];
$new_val = is_array($value['value']) ? $value['value'] : array(
$value['value'],
);
if ($new_val != $new_submission->data[$cid]['value']) {
$changed = TRUE;
}
$new_submission->data[$cid]['value'] = $new_val;
}
// Update submission data if necessary.
if ($changed) {
module_load_include('inc', 'webform', 'includes/webform.submissions');
// TODO: changed is always TRUE atm?
webform_submission_update($node, $new_submission);
}
return TRUE;
}