You are here

function uc_webform_pane_checkout_pane_callback in Ubercart Webform Checkout Pane 6

Same name and namespace in other branches
  1. 5 uc_webform_pane.module \uc_webform_pane_checkout_pane_callback()
  2. 6.3 uc_webform_pane.module \uc_webform_pane_checkout_pane_callback()
  3. 6.2 uc_webform_pane.module \uc_webform_pane_checkout_pane_callback()

Checkout Pane callback for dynamic callback function.

@link http://www.ubercart.org/docs/developer/245/checkout.

Parameters

$arg1 is the current order object if it exists.:

$arg2 is the contents of the array of the submitted form information for that pane. :

File

./uc_webform_pane.module, line 142
uc_webform_pane.module

Code

function uc_webform_pane_checkout_pane_callback($nid, $op, &$arg1, $arg2) {
  $node = node_load($nid);
  $info = _uc_webfom_pane_get_node_info($nid);
  $form_state = array();
  $form = webform_client_form($form_state, $node, NULL, TRUE);
  $form = $form['submitted'];
  unset($form['#tree']);
  unset($form[$info->form_key_order_id]);

  // Assign default values to webform
  if ($arg1->order_id) {
    $data = get_object_vars(_uc_webform_pane_get_data($nid, $arg1->order_id));
    foreach ($node->webform['components'] as $field) {
      if (isset($form[$field['form_key']]) && isset($form[$field['form_key']]['#default_value'])) {
        $default = $data['data'][$field['cid']]['value'];

        // options require safe key name
        if (is_array($default) && (count($default) > 1 || in_array($form[$field['form_key']]['#type'], array(
          'radios',
          'select',
        )))) {
          $default = array_filter($default);
          foreach ($default as $optk => $optv) {
            $default[$optk] = _webform_safe_name($optv);
          }
        }
        if (count($default) == 1) {
          $default = $default[0];
        }
        $form[$field['form_key']]['#default_value'] = $default;
      }
    }
  }

  // Cannot begin with a number
  foreach ($form as $k => $v) {
    $form["webform{$k}"] = $v;
    unset($form[$k]);
  }
  switch ($op) {
    case 'view':
      return array(
        'contents' => $form,
      );
      break;
    case 'process':
      _uc_webform_pane_delete($nid, $arg1->order_id);

      // reset
      _uc_webfom_pane_save($nid, $arg1->order_id, $arg2);

      // save to database
      return TRUE;
      break;
    case 'review':
      return _uc_webform_pane_render($nid, $arg1->order_id);
      break;
    default:
      break;
  }
}