You are here

function webform_workflow_change_submission_state in Webform Workflow 7

Action callback for changing the workflow state of a submission.

Parameters

object $submission: The submission, loaded via the Entity API as a 'webform_workflow_submission' entity.

array $context: Contextual information provided by the action configuration form. This must include the keys 'new_state' and 'message'.

See also

webform_workflow_action_info()

File

./webform_workflow.module, line 955
A simple workflow module for webforms.

Code

function webform_workflow_change_submission_state($submission, array $context) {

  // Reload the submission as a proper Webform submission object.
  module_load_include('inc', 'webform', 'includes/webform.submissions');
  $submission = webform_get_submission($submission->nid, $submission->sid);
  $node = node_load($submission->nid);
  $current_state = webform_workflow_state_load_by_submission($submission);
  if ($current_state && !webform_workflow_state_check_access('from', $current_state, $node, $submission)) {
    drupal_set_message(t('You do not have permission to change the state of submission #@sid', array(
      '@sid' => $submission->sid,
    )));
    return;
  }
  $new_state = $context['new_state'];
  if (!webform_workflow_state_check_access('to', $new_state, $node, $submission)) {
    drupal_set_message(t('You do not have permission to change submission #@sid to state %state', array(
      '@sid' => $submission->sid,
      '%state' => $new_state->label,
    )));
    return;
  }
  webform_workflow_transition($submission, $new_state, $context['message'], $GLOBALS['user'], TRUE, TRUE);
}