You are here

function uc_extra_fields_pane_order_handler in Extra Fields Checkout Pane 6

1 string reference to 'uc_extra_fields_pane_order_handler'
uc_extra_fields_pane_order_pane in ./uc_extra_fields_pane.module

File

./uc_extra_fields_pane.module, line 569

Code

function uc_extra_fields_pane_order_handler($op, $arg1) {
  switch ($op) {
    case 'edit-theme':
      $output = '<table class="order-edit-table">
                 <tr><th>' . $arg1['extra_fields_billing']['#title'] . '</th></tr>';
      foreach (element_children($arg1['extra_fields_billing']) as $field) {
        $title = $arg1['extra_fields_billing'][$field]['#title'];
        unset($arg1['extra_fields_billing'][$field]['#title']);
        unset($arg1['extra_fields_billing'][$field]['#description']);
        $output .= '<tr><td><strong>' . $title . '</strong>: ' . drupal_render($arg1['extra_fields_billing'][$field]) . '</td></tr>';
      }
      $output .= '</table>';
      $output .= '<table class="order-edit-table">
                  <tr><th>' . $arg1['extra_fields_delivery']['#title'] . '</th></tr>';
      foreach (element_children($arg1['extra_fields_delivery']) as $field) {
        $title = $arg1['extra_fields_delivery'][$field]['#title'];
        unset($arg1['extra_fields_delivery'][$field]['#title']);
        unset($arg1['extra_fields_delivery'][$field]['#description']);
        $output .= '<tr><td><strong>' . $title . '</strong>: ' . drupal_render($arg1['extra_fields_delivery'][$field]) . '</td></tr>';
      }
      $output .= '</table>';
      return $output;
    case 'edit-process':
      $fields = uc_extra_fields_pane_load_fields_from_db();
      $changes = array();
      $changes['extra_fields'] = array();

      // dynamically generate form elements
      if (count($fields)) {
        foreach ($fields as $field) {
          if (isset($arg1[$field['field'] . '_billing'])) {
            $changes['extra_fields'][$field['field'] . '_billing'] = $arg1[$field['field'] . '_billing'];
          }
          if (isset($arg1[$field['field'] . '_delivery'])) {
            $changes['extra_fields'][$field['field'] . '_delivery'] = $arg1[$field['field'] . '_delivery'];
          }
        }
      }
      return $changes;
    case 'edit-form':
      $form = array();
      $billing_enabled = variable_get('uc_pane_extra_billing_enabled', TRUE);
      $delivery_enabled = variable_get('uc_pane_extra_delivery_enabled', TRUE);
      if (!$delivery_enabled && !$billing_enabled) {
        return $form;
      }
      if ($billing_enabled) {
        $form['extra_fields_billing'] = array(
          '#type' => 'fieldset',
          '#title' => t(variable_get('uc_extra_fields_pane_billing_pane_title', 'Additional billing information')),
          '#collapsible' => FALSE,
          '#collapsed' => FALSE,
        );
      }
      if ($delivery_enabled) {
        $form['extra_fields_delivery'] = array(
          '#type' => 'fieldset',
          '#title' => t(variable_get('uc_extra_fields_pane_delivery_pane_title', 'Additional delivery information')),
          '#collapsible' => FALSE,
          '#collapsed' => FALSE,
        );
      }
      $fields = uc_extra_fields_pane_load_fields_from_db();

      // dynamically generate form elements
      if (count($fields)) {
        foreach ($fields as $field) {
          if ($delivery_enabled) {
            $form['extra_fields_delivery'][$field['field'] . '_delivery'] = array(
              '#type' => 'textfield',
              '#title' => t($field['title']),
              '#description' => t($field['description']),
              '#size' => 32,
              '#maxlength' => 255,
              '#required' => $field['required'],
              '#default_value' => isset($arg1->extra_fields[$field['field'] . '_delivery']) ? $arg1->extra_fields[$field['field'] . '_delivery'] : NULL,
            );
          }
          if ($billing_enabled) {
            $form['extra_fields_billing'][$field['field'] . '_billing'] = array(
              '#type' => 'textfield',
              '#title' => t($field['title']),
              '#description' => t($field['description']),
              '#size' => 32,
              '#maxlength' => 255,
              '#required' => $field['required'],
              '#default_value' => isset($arg1->extra_fields[$field['field'] . '_billing']) ? $arg1->extra_fields[$field['field'] . '_billing'] : NULL,
            );
          }
        }
      }
      return $form;

    // customer or administrator order detail page.
    case 'customer':
    case 'view':
      $fields = uc_extra_fields_pane_load_fields_from_db();
      $output = "";
      $values = db_fetch_array(db_query("select * from {uc_extra_fields_values} where order_id=%d", $arg1->order_id));
      $billing_fields = array();
      $delivery_fields = array();
      if (count($fields)) {
        foreach ($fields as $field) {

          // warning: user input --> check_plain
          if (isset($values[$field['field'] . '_billing'])) {
            $billing_fields[] = t($field['title']) . ': ' . check_plain($values[$field['field'] . '_billing']) . '<br />';
          }
          if (isset($values[$field['field'] . '_delivery'])) {
            $delivery_fields[] = t($field['title']) . ': ' . check_plain($values[$field['field'] . '_delivery']) . '<br />';
          }
        }
      }
      if (count($billing_fields)) {
        $output = '<strong><small>' . t(variable_get('uc_extra_fields_pane_billing_pane_title', 'Additional billing information')) . '</small></strong><br />' . implode('<br />', $billing_fields);
      }
      if (count($delivery_fields)) {
        $output .= '<strong><small>' . t(variable_get('uc_extra_fields_pane_delivery_pane_title', 'Additional delivery information')) . '</small></strong><br />' . implode('<br />', $delivery_fields);
      }
      return $output;
  }
}