function uc_extra_fields_pane_uc_order in Extra Fields Checkout Pane 7
Implements hook_uc_order().
Parameters
string $op: The action being performed.
object $order: The Ubercart order object.
mixed $arg2: This is variable and is based on the value of $op.
Return value
void
File
- ./
uc_extra_fields_pane.module, line 186 - Module: uc_extra_fields_pane.module
Code
function uc_extra_fields_pane_uc_order($op, &$order, $arg2) {
$aElementTypes = array(
'delivery' => array(
'pane_type' => 'extra_delivery',
'element_type' => UCXF_Value::UCXF_VALUE_ORDER_DELIVERY,
'prefix' => 'delivery_',
'uc_addresses_type' => 'shipping',
),
'billing' => array(
'pane_type' => 'extra_billing',
'element_type' => UCXF_Value::UCXF_VALUE_ORDER_BILLING,
'prefix' => 'billing_',
'uc_addresses_type' => 'billing',
),
);
switch ($op) {
case 'save':
// Save values per element type.
foreach ($aElementTypes as $element_type => $data) {
$fields = UCXF_FieldList::getFieldsFromPane($data['pane_type']);
foreach ($fields as $fieldname => $field) {
if (isset($order->uc_addresses[$data['uc_addresses_type']])) {
$address = $order->uc_addresses[$data['uc_addresses_type']];
try {
$value = $address
->getField($fieldname);
if (!is_null($value)) {
uc_extra_fields_pane_value_save(array(
'element_id' => $order->order_id,
'element_type' => $data['element_type'],
'field_id' => $field->field_id,
'value' => $value,
));
}
} catch (UcAddressesException $e) {
// Log any Ubercart Addresses exceptions.
watchdog('ucxf', 'An exception occured when trying to save value for field %field when editing order @order_id: @exception', array(
'%field' => $fieldname,
'@order_id' => $order->order_id,
'@exception' => $e
->getMessage(),
), WATCHDOG_WARNING);
}
}
}
}
break;
case 'load':
// Set address field values for Ubercart Addresses.
// Delivery fields
if (isset($order->uc_addresses['shipping'])) {
$value_list = uc_extra_fields_pane_value_list_load($order->order_id, UCXF_Value::UCXF_VALUE_ORDER_DELIVERY);
foreach ($value_list as $oValue) {
$order->uc_addresses['shipping']
->setField($oValue->db_name, $oValue->value);
$order->{'delivery_' . $oValue->db_name} = $oValue->value;
}
$order->uc_addresses['shipping']->ucxf_pane_type = 'extra_delivery';
}
// Billing fields
if (isset($order->uc_addresses['billing'])) {
$value_list = uc_extra_fields_pane_value_list_load($order->order_id, UCXF_Value::UCXF_VALUE_ORDER_BILLING);
foreach ($value_list as $oValue) {
$order->uc_addresses['billing']
->setField($oValue->db_name, $oValue->value);
$order->{'billing_' . $oValue->db_name} = $oValue->value;
}
$order->uc_addresses['billing']->ucxf_pane_type = 'extra_billing';
}
break;
case 'delete':
// Delete Extra Fields Pane values belonging to order.
db_delete('uc_extra_fields_values')
->condition('element_id', $order->order_id)
->condition('element_type', array(
UCXF_Value::UCXF_VALUE_ORDER_DELIVERY,
UCXF_Value::UCXF_VALUE_ORDER_BILLING,
), 'IN')
->execute();
break;
}
}