You are here

function webform_node_value_client_submit in Webform Node Value 7

Submit callback for the client form. Fetch node field value and insert it in Webform field.

_state

Parameters

$form:

1 string reference to 'webform_node_value_client_submit'
webform_node_value_form_alter in ./webform_node_value.module
Implements hook_form_alter().

File

./webform_node_value.module, line 107

Code

function webform_node_value_client_submit($form, &$form_state) {
  $settings = webform_node_value_configuration_get($form_state['values']['details']['nid']);
  if ($settings === FALSE) {
    return;
  }
  switch ($settings->node_path_source) {
    case 'page':
      if (isset($_GET['webform_node_value_nid']) && !empty($_GET['webform_node_value_nid'])) {
        if (user_access('node/' . $_GET['webform_node_value_nid'])) {
          $nid = $_GET['webform_node_value_nid'];
        }
        else {
          watchdog('webform_node_value', t('Attempt to access node that user did not have permission to access.'));
        }
      }
      break;
    case 'field':
      if (!isset($form_state['values']['submitted'][$settings->webform_source])) {
        watchdog('webform_node_value', 'Source field not found on Webform: %field', array(
          '%field' => $settings->webform_source,
        ));
        return;
      }
      $webform_value = $form_state['values']['submitted'][$settings->webform_source];
      $nid = webform_node_value_nid_from_field($settings, $webform_value);
      break;
  }
  if (empty($nid)) {
    watchdog('webform_node_value', "Node ID %nid couldn't be found", array(
      '%nid' => $nid,
    ));
    return;
  }

  // Get node field info.
  $node = node_load($nid);
  $node_field = field_get_items('node', $node, $settings->node_field_name);
  if (empty($node_field)) {
    watchdog('webform_node_value', "Field %field could not be found for Node ID %nid (%title)", array(
      '%field' => $settings->node_field_name,
      '%nid' => $nid,
      '%title' => $node->title,
    ));
    return;
  }
  $node_field_value = field_view_value('node', $node, $settings->node_field_name, $node_field[0]);

  // Set value of field in Webform with value from node.
  $field_name = trim(check_plain($settings->webform_destination));
  $form_state['values']['submitted'][$field_name] = strip_tags(render($node_field_value));
  return;
}