You are here

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);
  }
}