commerce_product_bundles-8.x-1.0/commerce_product_bundles.install

commerce_product_bundles.install
<?php

use Drupal\Core\Session\AccountInterface;

/**
 * Implements hook_install().
 * Grant 'View Commerce Product Bundle' permission to admin and regular user.
 */
function commerce_product_bundles_install() {
  // Allow all roles to view published products.
  user_role_grant_permissions(AccountInterface::ANONYMOUS_ROLE, ['view commerce_product_bundles']);
  user_role_grant_permissions(AccountInterface::AUTHENTICATED_ROLE, ['view commerce_product_bundles']);
}

/**
 * Update the 'uid' field for bundle product and bundle variations to use EntityOwnerTrait implementation.
 */
function commerce_product_bundles_update_8201() {
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  $base_field_override_storage = \Drupal::entityTypeManager()->getStorage('base_field_override');

  foreach (['commerce_product_bundles', 'commerce_bundle_variation'] as $entity_type_id) {
    $storage_definition = $definition_update_manager->getFieldStorageDefinition('uid', $entity_type_id);
    $default_value_callback = $entity_type_id === 'commerce_product_bundles' ? ProductBundle::class . '::getDefaultEntityOwner' : ProductBundleVariation::class . '::getDefaultEntityOwner';

    $base_field_overrides = $base_field_override_storage->loadByProperties([
      'entity_type' => $entity_type_id,
      '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;
      }
      $base_field_override->setDefaultValueCallback($default_value_callback);
      $base_field_override->save();
    }

    $storage_definition->setDefaultValueCallback($default_value_callback);
    $definition_update_manager->updateFieldStorageDefinition($storage_definition);
  }
}

/**
 * Implements hook_install().
 *
 * Set duplicated PB class.
 */
function commerce_product_bundles_update_8202() {
  $entity_type_manager = \Drupal::entityTypeManager();
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();

  // Set App UI string storage schema.
  $commerce_product_bundles = $entity_type_manager->getDefinition('commerce_product_bundles')
    ->setFormClass('duplicate', 'Drupal\commerce_product_bundles\Form\ProductBundleForm');
  $definition_update_manager->updateEntityType($commerce_product_bundles);
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc