eck-8.x-1.x-dev/eck.install

eck.install
<?php

/**
 * @file
 * Install file for the Entity Construction Kit (ECK) module.
 */

use Drupal\eck\Entity\EckEntityBundle;

/**
 * Enable all base fields for existing ECK entity types.
 */
function eck_update_8001() {
  $entity_types = \Drupal::entityTypeManager()
    ->getStorage('eck_entity_type')
    ->loadMultiple();
  $names = [];

  foreach ($entity_types as $entity_type) {
    $names[] = "eck.eck_entity_type.{$entity_type->id()}";
  }

  foreach ($names as $name) {
    $config = \Drupal::configFactory()->getEditable($name);
    $data = $config->getRawData();
    foreach (['uid', 'title', 'created', 'changed'] as $field) {
      $data[$field] = TRUE;
    }
    $config->setData($data);
    $config->save();
  }

  drupal_flush_all_caches();
  $definition_update_manager = \Drupal::service('entity.definition_update_manager');
  $definition_update_manager->getChangeList();
}

/**
 * Re-save all bundles for all entities to set the correct dependencies.
 */
function eck_update_8002() {
  $bundles = EckEntityBundle::loadMultiple();
  foreach ($bundles as $bundle) {
    $bundle->save();
  }
}

/**
 * Update entity definitions to fix any mismatched entities.
 *
 * @see https://www.drupal.org/node/2646412
 */
function eck_update_8003() {
  $definition_update_manager = \Drupal::service('entity.definition_update_manager');
  $definition_update_manager->getChangeList();
}

/**
 * Upgrades ECK tables.
 *
 * (ID columns should be of unsigned int type) and installs new definitions from
 * code.
 */
function eck_update_8004() {
  $schema = Drupal::database()->schema();
  /** @var \Drupal\Core\Entity\EntityDefinitionUpdateManagerInterface $entityDefinitionUpdateManager */
  $entityDefinitionUpdateManager = Drupal::service('entity.definition_update_manager');
  $entityTypeManager = Drupal::entityTypeManager();
  $eckEntityTypes = $entityTypeManager
    ->getStorage('eck_entity_type')
    ->loadMultiple();
  $idColumnSpec = [
    'primary key' => TRUE,
    'type' => 'serial',
    'unsigned' => TRUE,
    'not null' => TRUE,
  ];

  /** @var \Drupal\eck\Entity\EckEntityType $entity_type */
  foreach ($eckEntityTypes as $machineName => $entity_type) {
    $entityTypeDefinition = $entityTypeManager->getDefinition($machineName);

    $schema->changeField($entityTypeDefinition->getBaseTable(), 'id', 'id', $idColumnSpec);
    $schema->changeField($entityTypeDefinition->getDataTable(), 'id', 'id', $idColumnSpec);

    $entityDefinitionUpdateManager->installEntityType($entityTypeDefinition);
  }
}

/**
 * Add 'status' key for entity type config.
 */
function eck_update_8005() {
  $config_factory = \Drupal::configFactory();
  foreach ($config_factory->listAll('eck.eck_entity_type.') as $name) {
    $config = $config_factory->getEditable($name);
    // By default 'status' field will be disabled for existing entities types.
    $config->set('status', FALSE);
    $config->save();
  }
}

/**
 * Set the 'published' entity key.
 */
function eck_update_8006() {
  $definition_update_manager = \Drupal::entityDefinitionUpdateManager();
  foreach (\Drupal::entityTypeManager()->getStorage('eck_entity_type')->loadMultiple() as $entity_type) {
    $entity_type = $definition_update_manager->getEntityType($entity_type->id());
    $keys = $entity_type->getKeys();
    $keys['published'] = 'status';
    $entity_type->set('entity_keys', $keys);
    $definition_update_manager->updateEntityType($entity_type);
  }
}

/**
 * Add 'standalone_url' key for entity type config.
 */
function eck_update_8007() {
  $config_factory = \Drupal::configFactory();
  foreach ($config_factory->listAll('eck.eck_entity_type.') as $name) {
    $config = $config_factory->getEditable($name);
    if ($config->get('standalone_url') !== NULL) {
      continue;
    }

    // By default, 'standalone_url' field will be enabled for existing
    // entity types.
    $config->set('standalone_url', TRUE);
    $config->save();
  }
}

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

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