You are here

function uc_product_entity_bundle_field_info in Ubercart 8.4

Implements hook_entity_bundle_field_info().

File

uc_product/uc_product.module, line 439
The product module for Ubercart.

Code

function uc_product_entity_bundle_field_info(EntityTypeInterface $entity_type, $bundle, array $base_field_definitions) {
  if ($entity_type
    ->id() == 'node' && uc_product_is_product($bundle)) {
    $fields['model'] = BaseFieldDefinition::create('string')
      ->setLabel(t('SKU'))
      ->setDescription(t('Product SKU/model.'))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue('')
      ->setSetting('max_length', 40)
      ->setDisplayOptions('form', [
      'type' => 'string_textfield',
      'weight' => 1,
      'settings' => [
        'size' => 32,
      ],
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayOptions('view', [
      'type' => 'string',
      'label' => 'inline',
      'weight' => 1,
    ])
      ->setDisplayConfigurable('view', TRUE);
    $fields['cost'] = BaseFieldDefinition::create('uc_price')
      ->setLabel(t('Cost'))
      ->setDescription(t("Your store's cost."))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue('0.00')
      ->setSetting('min', 0)
      ->setDisplayOptions('form', [
      'region' => 'hidden',
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayOptions('view', [
      'region' => 'hidden',
    ])
      ->setDisplayConfigurable('view', TRUE);
    $fields['price'] = BaseFieldDefinition::create('uc_price')
      ->setLabel(t('Price'))
      ->setDescription(t('Customer purchase price.'))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue('0.00')
      ->setSetting('min', 0)
      ->setDisplayOptions('form', [
      'type' => 'uc_price',
      'weight' => 2,
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayOptions('view', [
      'type' => 'uc_price',
      'label' => 'inline',
      'weight' => 2,
    ])
      ->setDisplayConfigurable('view', TRUE);
    $fields['shippable'] = BaseFieldDefinition::create('boolean')
      ->setLabel(t('Shippable'))
      ->setCustomStorage(TRUE)
      ->setDefaultValue(NodeType::load($bundle)
      ->getThirdPartySetting('uc_product', 'shippable', TRUE))
      ->setSetting('on_label', t('Product is shippable'))
      ->setSetting('off_label', t('Product is not shippable'))
      ->setDisplayOptions('form', [
      'type' => 'boolean_checkbox',
      'settings' => [
        'display_label' => TRUE,
      ],
      'weight' => 3,
    ])
      ->setDisplayConfigurable('form', TRUE);
    $fields['weight'] = BaseFieldDefinition::create('uc_weight')
      ->setLabel(t('Weight'))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue([
      'value' => 0,
      'units' => \Drupal::config('uc_store.settings')
        ->get('weight.units'),
    ])
      ->setDisplayOptions('form', [
      'type' => 'uc_weight',
      'weight' => 4,
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayOptions('view', [
      'type' => 'uc_weight',
      'label' => 'inline',
      'weight' => 4,
    ])
      ->setDisplayConfigurable('view', TRUE);
    $fields['dimensions'] = BaseFieldDefinition::create('uc_dimensions')
      ->setLabel(t('Dimensions'))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue([
      'length' => 0,
      'width' => 0,
      'height' => 0,
      'units' => \Drupal::config('uc_store.settings')
        ->get('length.units'),
    ])
      ->setDisplayOptions('form', [
      'type' => 'uc_dimensions',
      'weight' => 5,
    ])
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayOptions('view', [
      'type' => 'uc_dimensions',
      'label' => 'inline',
      'weight' => 5,
    ])
      ->setDisplayConfigurable('view', TRUE);
    $fields['pkg_qty'] = BaseFieldDefinition::create('integer')
      ->setLabel(t('Maximum package quantity'))
      ->setDescription(t('At most, how many of these items can fit in your largest box? Orders that exceed this value will be split into multiple packages when retrieving shipping quotes.'))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue('1')
      ->setDisplayOptions('form', [
      'region' => 'hidden',
    ])
      ->setDisplayConfigurable('form', TRUE);
    $fields['default_qty'] = BaseFieldDefinition::create('integer')
      ->setLabel(t('Default quantity to add to cart'))
      ->setDescription(t('Use 0 to disable the quantity field next to the add to cart button.'))
      ->setRequired(TRUE)
      ->setCustomStorage(TRUE)
      ->setDefaultValue('1')
      ->setDisplayOptions('form', [
      'region' => 'hidden',
    ])
      ->setDisplayConfigurable('form', TRUE);
    return $fields;
  }
}