function uc_webform_pane_checkout_pane_callback in Ubercart Webform Checkout Pane 6
Same name and namespace in other branches
- 5 uc_webform_pane.module \uc_webform_pane_checkout_pane_callback()
- 6.3 uc_webform_pane.module \uc_webform_pane_checkout_pane_callback()
- 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;
}
}