commerce_store.install in Commerce Core 8.2
Contains install and update functions for commerce_store module.
File
modules/store/commerce_store.installView 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
Name![]() |
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. |