You are here

function uc_product_kit_uc_form_alter in Ubercart 8.4

Same name and namespace in other branches
  1. 6.2 uc_product_kit/uc_product_kit.module \uc_product_kit_uc_form_alter()
  2. 7.3 uc_product_kit/uc_product_kit.module \uc_product_kit_uc_form_alter()

Implements hook_uc_form_alter().

Puts a product list on the form, so product kit attributes will work on the order admin edit form. See uc_attribute_form_alter().

File

uc_product_kit/uc_product_kit.module, line 91
The product kit module for Ubercart.

Code

function uc_product_kit_uc_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == 'uc_order_add_product_form') {
    if (!isset($form['sub_products'])) {

      // We only want product kits.
      $kit = $form['node']['#value'];
      if ($kit
        ->getType() !== 'product_kit') {
        return;
      }
      $products = [
        '#tree' => TRUE,
      ];
      foreach ($kit->products as $kit_product) {
        $products[$kit_product->nid] = [];
      }

      // Add the products to the beginning of the form for visual aesthetics.
      $form = array_merge([
        'sub_products' => $products,
      ], $form);
    }
  }
  elseif (strpos($form_id, 'uc_product_add_to_cart_form') !== FALSE) {
    $kit = $form['node']['#value'];
    if ($kit
      ->getType() !== 'product_kit') {
      return;
    }
    $form['products'] = [
      '#tree' => TRUE,
    ];
    foreach ($kit->products as $i => $product) {
      $form['products'][$i] = [
        '#title' => $product
          ->label(),
      ];
      $form['products'][$i]['nid'] = [
        '#type' => 'hidden',
        '#value' => $product
          ->id(),
      ];
      $form['products'][$i]['qty'] = [
        '#type' => 'hidden',
        '#value' => $product->qty,
      ];
    }
    $form['#validate'][] = 'uc_product_kit_add_to_cart_form_validate';
    $form['#submit'][] = 'uc_product_kit_add_to_cart_form_submit';
  }
  elseif (strpos($form_id, 'uc_product_buy_it_now_form') !== FALSE) {
    $kit = $form['node']['#value'];
    if ($kit
      ->getType() !== 'product_kit') {
      return;
    }
    $form['products'] = [
      '#tree' => TRUE,
    ];
    foreach ($node->products as $i => $product) {
      $form['products'][$i] = [
        '#title' => $product->title,
      ];
      $form['products'][$i]['nid'] = [
        '#type' => 'hidden',
        '#value' => $product->nid,
      ];
      $form['products'][$i]['qty'] = [
        '#type' => 'hidden',
        '#value' => $product->qty,
      ];
    }
    $form['#validate'][] = 'uc_product_kit_buy_it_now_form_validate';
    $form['#submit'][] = 'uc_product_kit_buy_it_now_form_submit';
  }
}