You are here

function uc_checkout_pane_callback in Ubercart 7.3

Builds and proceses a pane defined by hook_uc_checkout_pane().

Parameters

$op: The operation the pane is performing. Possible values are "view", "process", "review", and "settings".

$order: The order being viewed or edited.

$form: The order's edit form. NULL for non-edit ops.

&$form_state: The form state array of the edit form. NULL for non-edit ops.

Return value

Varies according to the value of $op:

  • view: An array with two keys, "contents" and an optional "description". "contents" is a form array to collect the checkout data for the pane. The description provides help text for the pane as a whole.
  • process: A boolean indicating that checkout should continue. During this op, $order should be modified with the values in $form_state['values']['panes'][PANE_ID].
  • review: An array containing review sections. A review section contains "title" and "data" keys which have HTML to be displayed on the checkout review page.
  • settings: A settings form which can be used with system_settings_form().

File

uc_cart/uc_cart.api.php, line 392
Hooks provided by the Cart module.

Code

function uc_checkout_pane_callback($op, $order, $form = NULL, &$form_state = NULL) {

  // uc_checkout_pane_comments()
  switch ($op) {
    case 'view':
      $description = t('Use this area for special instructions or questions regarding your order.');
      if (!empty($order->order_id)) {
        $default = db_query("SELECT message FROM {uc_order_comments} WHERE order_id = :id", array(
          ':id' => $order->order_id,
        ))
          ->fetchField();
      }
      else {
        $default = NULL;
      }
      $contents['comments'] = array(
        '#type' => 'textarea',
        '#title' => t('Order comments'),
        '#default_value' => $default,
      );
      return array(
        'description' => $description,
        'contents' => $contents,
      );
    case 'process':
      if ($form_state['values']['panes']['comments']['comments']) {
        db_delete('uc_order_comments')
          ->condition('order_id', $order->order_id)
          ->execute();
        uc_order_comment_save($order->order_id, 0, $form_state['values']['panes']['comments']['comments'], 'order', uc_order_state_default('post_checkout'), TRUE);
      }
      return TRUE;
    case 'review':
      $review = NULL;
      $result = db_query("SELECT message FROM {uc_order_comments} WHERE order_id = :id", array(
        ':id' => $order->order_id,
      ));
      if ($comment = $result
        ->fetchObject()) {
        $review[] = array(
          'title' => t('Comment'),
          'data' => check_plain($comment->message),
        );
      }
      return $review;
  }
}