function uc_extra_fields_pane_query_uc_get_addresses_alter in Extra Fields Checkout Pane 7
Implements hook_query_TAG_alter().
Alters the query where addresses are get from previous orders and makes sure that values from extra address fields are added to the selection.
Parameters
QueryAlterableInterface $query: The query to alter.
Return value
void
File
- ./
uc_extra_fields_pane.module, line 149 - Module: uc_extra_fields_pane.module
Code
function uc_extra_fields_pane_query_uc_get_addresses_alter(QueryAlterableInterface $query) {
if ($query
->hasTag('address_type:billing')) {
$element_type = UCXF_Value::UCXF_VALUE_ORDER_BILLING;
$fields = UCXF_FieldList::getFieldsFromPane('extra_billing');
}
elseif ($query
->hasTag('address_type:delivery')) {
$element_type = UCXF_Value::UCXF_VALUE_ORDER_DELIVERY;
$fields = UCXF_FieldList::getFieldsFromPane('extra_delivery');
}
else {
// Other address types not supported.
return;
}
foreach ($fields as $field) {
$table_name = 'uc_extra_fields_pane_values_' . $field->db_name;
$query
->leftJoin('uc_extra_fields_values', $table_name, "o.order_id = {$table_name}.element_id AND ({$table_name}.field_id = '" . $field->field_id . "' AND {$table_name}.element_type = '" . $element_type . "')");
$query
->addField($table_name, 'value', $field->db_name);
}
}