bridtv-8.x-1.x-dev/bridtv.install
bridtv.install
<?php
/**
* @file
* Brid.TV integration install file.
*/
/**
* Implements hook_requirements().
*/
function bridtv_requirements($phase) {
$requirements = [];
$settings = \Drupal::config('bridtv.settings')->getRawData();
if (empty($settings['partner_id']) || empty($settings['access_token'])) {
$requirements['bridtv'] = [
'title' => t('Incomplete Brid.TV settings'),
'description' => t('Either the partner ID, or the API access token is missing (or both). Without this, the Brid.TV integration does not work. See the README of the Brid.TV integration module about how to properly install it.'),
'severity' => REQUIREMENT_WARNING,
];
}
return $requirements;
}
/**
* Update the field storage schema for bridtv items.
*/
function bridtv_update_8001() {
$storage = \Drupal::entityTypeManager()->getStorage('field_storage_config');
if (!($definition = $storage->load('media.field_bridtv'))) {
return;
}
$values = $definition->toArray();
$existing = [];
$tables = ['media__field_bridtv', 'media_revision__field_bridtv'];
$db = \Drupal::database();
foreach ($tables as $table) {
$existing[$table] = $db->select($table)
->fields($table)
->execute()
->fetchAll(\PDO::FETCH_ASSOC);
$db->truncate($table)->execute();
}
$update_manager = \Drupal::entityDefinitionUpdateManager();
$update_manager->uninstallFieldStorageDefinition($definition);
foreach ($tables as $table) {
$db->schema()->dropTable($table);
}
$new_definition = $storage->create($values);
$update_manager->installFieldStorageDefinition('field_bridtv', 'media', 'bridtv', $new_definition);
foreach ($existing as $table => $data) {
if (!empty($data)) {
$insert = $db->insert($table)->fields(array_keys(end($data)));
foreach ($data as $row) {
$insert->values(array_values($row));
}
$insert->execute();
}
}
}
