kaltura_media-1.0.x-dev/kaltura_media.install

kaltura_media.install
<?php

/**
 * @file
 * Install file for kaltura_media.
 */

use Drupal\Core\Entity\Sql\SqlContentEntityStorage;

/**
 * Add new domain property.
 */
function kaltura_media_update_8001() {
  $field_type = 'kaltura';
  $property = 'domain';
  $manager = Drupal::entityDefinitionUpdateManager();
  $field_map = Drupal::service('entity_field.manager')
    ->getFieldMapByFieldType($field_type);
  foreach ($field_map as $entity_type_id => $fields) {  
    foreach (array_keys($fields) as $field_name) {
      $field_storage_definition = $manager->getFieldStorageDefinition($field_name, $entity_type_id);
      $storage = Drupal::entityTypeManager()->getStorage($entity_type_id);  
      if ($storage instanceof SqlContentEntityStorage) {
        $table_mapping = $storage->getTableMapping([
          $field_name => $field_storage_definition,
        ]);
        $table_names = $table_mapping->getDedicatedTableNames();
        $columns = $table_mapping->getColumnNames($field_name);
        foreach ($table_names as $table_name) {
          $field_schema = $field_storage_definition->getSchema();
          $schema = Drupal::database()->schema();
          $field_exists = $schema->fieldExists($table_name, $columns[$property]);
          $table_exists = $schema->tableExists($table_name);  
          if (!$field_exists && $table_exists) {
            $schema->addField($table_name, $columns[$property], $field_schema['columns'][$property]);
          }
        }
      }
      $manager->updateFieldStorageDefinition($field_storage_definition);
    }
  }
}

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

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