You are here

commerce_store.install in Commerce Core 8.2

Contains install and update functions for commerce_store module.

File

modules/store/commerce_store.install
View source
<?php

/**
 * @file
 * Contains install and update functions for commerce_store module.
 */
use Drupal\commerce_store\Entity\Store;
use Drupal\Core\Field\BaseFieldDefinition;

/**
 * Add the URL alias path field to stores.
 */
function commerce_store_update_8201() {
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  if (!\Drupal::moduleHandler()
    ->moduleExists('path')) {
    \Drupal::service('module_installer')
      ->install([
      'path',
    ]);
  }
  $storage_definition = BaseFieldDefinition::create('path')
    ->setLabel(t('URL alias'))
    ->setDescription(t('The store URL alias.'))
    ->setTranslatable(TRUE)
    ->setDisplayOptions('form', [
    'type' => 'path',
    'weight' => 30,
  ])
    ->setDisplayConfigurable('form', TRUE)
    ->setCustomStorage(TRUE);
  $definition_update_manager
    ->installFieldStorageDefinition('path', 'commerce_store', 'commerce_store', $storage_definition);
}

/**
 * Update entity keys for stores.
 */
function commerce_store_update_8202() {
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  $uid_storage_definition = $definition_update_manager
    ->getFieldStorageDefinition('uid', 'commerce_store');
  $entity_type = $definition_update_manager
    ->getEntityType('commerce_store');
  $keys = $entity_type
    ->getKeys();
  $keys['owner'] = 'uid';
  $keys['uid'] = 'uid';
  $entity_type
    ->set('entity_keys', $keys);
  $definition_update_manager
    ->updateEntityType($entity_type);
  $definition_update_manager
    ->updateFieldStorageDefinition($uid_storage_definition);
}

/**
 * Add the timezone field to stores.
 */
function commerce_store_update_8203() {
  $site_timezone = Store::getSiteTimezone();
  $site_timezone = reset($site_timezone);
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  $storage_definition = BaseFieldDefinition::create('list_string')
    ->setLabel(t('Timezone'))
    ->setDescription(t('Used when determining promotion and tax availability.'))
    ->setInitialValue($site_timezone)
    ->setCardinality(1)
    ->setRequired(TRUE)
    ->setDefaultValueCallback('Drupal\\commerce_store\\Entity\\Store::getSiteTimezone')
    ->setSetting('allowed_values_function', [
    '\\Drupal\\commerce_store\\Entity\\Store',
    'getTimezones',
  ])
    ->setDisplayOptions('form', [
    'type' => 'options_select',
    'weight' => 3,
  ])
    ->setDisplayConfigurable('view', TRUE)
    ->setDisplayConfigurable('form', TRUE);
  $definition_update_manager
    ->installFieldStorageDefinition('timezone', 'commerce_store', 'commerce_store', $storage_definition);
}

/**
 * Add the 'is_default' field to stores.
 */
function commerce_store_update_8204() {
  $storage_definition = BaseFieldDefinition::create('boolean')
    ->setLabel(t('Default'))
    ->setDescription(t('Whether this is the default store.'))
    ->setDefaultValue(FALSE)
    ->setDisplayOptions('form', [
    'type' => 'boolean_checkbox',
    'settings' => [
      'display_label' => TRUE,
    ],
    'weight' => 90,
  ])
    ->setDisplayConfigurable('view', TRUE)
    ->setDisplayConfigurable('form', TRUE);
  $update_manager = \Drupal::entityDefinitionUpdateManager();
  $update_manager
    ->installFieldStorageDefinition('is_default', 'commerce_store', 'commerce_store', $storage_definition);
}

/**
 * Update the 'uid' field.
 */
function commerce_store_update_8205() {
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  $base_field_override_storage = \Drupal::entityTypeManager()
    ->getStorage('base_field_override');
  $storage_definition = $definition_update_manager
    ->getFieldStorageDefinition('uid', 'commerce_store');
  $default_value_callback = Store::class . '::getDefaultEntityOwner';
  $base_field_overrides = $base_field_override_storage
    ->loadByProperties([
    'entity_type' => 'commerce_store',
    'field_name' => 'uid',
  ]);

  /** @var \Drupal\Core\Field\FieldDefinitionInterface $base_field_override */
  foreach ($base_field_overrides as $base_field_override) {
    if ($base_field_override
      ->getDefaultValueCallback() !== $storage_definition
      ->getDefaultValueCallback()) {
      continue;
    }

    // Update the "default_value_callback" for base field overrides, as long
    // as they're using the default one.
    $base_field_override
      ->setDefaultValueCallback($default_value_callback);
    $base_field_override
      ->save();
  }
  $storage_definition
    ->setDefaultValueCallback($default_value_callback);
  $definition_update_manager
    ->updateFieldStorageDefinition($storage_definition);
}

Functions

Namesort descending Description
commerce_store_update_8201 Add the URL alias path field to stores.
commerce_store_update_8202 Update entity keys for stores.
commerce_store_update_8203 Add the timezone field to stores.
commerce_store_update_8204 Add the 'is_default' field to stores.
commerce_store_update_8205 Update the 'uid' field.