You are here

function commerce_order_profile_type_form_submit in Commerce Core 8.2

Submission handler for commerce_order_form_profile_type_form_alter().

1 string reference to 'commerce_order_profile_type_form_submit'
commerce_order_form_profile_type_form_alter in modules/order/commerce_order.module
Implements hook_form_FORM_ID_alter() for 'profile_type_form'.

File

modules/order/commerce_order.module, line 302
Defines the Order entity and associated features.

Code

function commerce_order_profile_type_form_submit(array $form, FormStateInterface $form_state) {

  /** @var \Drupal\profile\Entity\ProfileTypeInterface $profile_type */
  $profile_type = $form_state
    ->getFormObject()
    ->getEntity();
  $customer_flag = $form_state
    ->getValue([
    'commerce_order',
    'customer_profile_type',
  ]);
  $previous_customer_flag = $profile_type
    ->getThirdPartySetting('commerce_order', 'customer_profile_type');

  /** @var \Drupal\commerce\ConfigurableFieldManagerInterface $configurable_field_manager */
  $configurable_field_manager = \Drupal::service('commerce.configurable_field_manager');
  $address_field_definition = commerce_order_build_address_field_definition($profile_type
    ->id());
  if ($customer_flag && !$previous_customer_flag) {
    $configurable_field_manager
      ->createField($address_field_definition, FALSE);
  }
  elseif (!$customer_flag && $previous_customer_flag) {
    $configurable_field_manager
      ->deleteField($address_field_definition);
  }
  $profile_type
    ->setThirdPartySetting('commerce_order', 'customer_profile_type', $customer_flag);
  $profile_type
    ->save();
}