abstract class FileBase in Media Migration 8
Abstract plugin class for file-based media migration source plugins.
Not every file entity will be migrated into a media file field: for example, remote ("YouTube" or "Vimeo") file entities are migrated into a media source field with type "string". This is a base plugin class for those file entity dealer plugins which needs to migrate file entities to media entities with file-based source field (linke "file" or "image").
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\media_migration\MediaDealerBase implements ContainerFactoryPluginInterface
- class \Drupal\media_migration\FileEntityDealerBase implements FileEntityDealerPluginInterface
- class \Drupal\media_migration\Plugin\media_migration\file_entity\FileBase
- class \Drupal\media_migration\FileEntityDealerBase implements FileEntityDealerPluginInterface
- class \Drupal\media_migration\MediaDealerBase implements ContainerFactoryPluginInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of FileBase
1 file declares its use of FileBase
File
- src/
Plugin/ media_migration/ file_entity/ FileBase.php, line 18
Namespace
Drupal\media_migration\Plugin\media_migration\file_entityView source
abstract class FileBase extends FileEntityDealerBase {
/**
* {@inheritdoc}
*/
public function alterMediaEntityMigrationDefinition(array &$migration_definition, Connection $connection) : void {
$source_field_name = $this
->getDestinationMediaSourceFieldName();
$migration_definition['process'][$source_field_name . '/target_id'] = 'fid';
$migration_definition['process'][$source_field_name . '/display'] = 'display';
$migration_definition['process'][$source_field_name . '/description'] = 'description';
}
/**
* {@inheritdoc}
*/
public function prepareMediaEntityRow(Row $row, Connection $connection) : void {
parent::prepareMediaEntityRow($row, $connection);
foreach ($this
->getFileData($connection, $row
->getSourceProperty('fid')) as $data_key => $data_value) {
$row
->setSourceProperty($data_key, $data_value);
}
}
/**
* Get the name of the file fields from the source database.
*
* @param \Drupal\Core\Database\Connection $connection
* The database connection of the source Drupal 7 instance.
* @param bool $field_names_only
* Whether only the name of the file fields should be returned. Defaults to
* TRUE.
*
* @return array
* The array of the available file fields.
*/
protected function getFileFieldData(Connection $connection, bool $field_names_only = TRUE) : array {
$field_query = $connection
->select('field_config', 'fs')
->fields('fs', [
'field_name',
])
->condition('fs.type', 'file')
->condition('fs.active', 1)
->condition('fs.deleted', 0)
->condition('fs.storage_active', 1)
->condition('fi.deleted', 0);
$field_query
->join('field_config_instance', 'fi', 'fs.id = fi.field_id');
if ($field_names_only) {
return array_keys($field_query
->execute()
->fetchAllAssoc('field_name'));
}
$field_query
->addField('fs', 'data', 'field_storage_data');
$field_query
->addField('fi', 'data', 'field_instance_data');
$fields_data = [];
foreach ($field_query
->execute()
->fetchAll(\PDO::FETCH_ASSOC) as $item) {
foreach ([
'field_storage_data',
'field_instance_data',
] as $data_key) {
$item[$data_key] = unserialize($item[$data_key]);
}
$fields_data[] = $item;
}
return $fields_data;
}
/**
* Returns display and description properties of the specified file.
*
* @param \Drupal\Core\Database\Connection $connection
* The database connection of the source Drupal 7 instance.
* @param string|int $file_id
* The ID of the file.
*
* @return array
* An array of those properties whose value is not empty.
*/
protected function getFileData(Connection $connection, $file_id) : array {
foreach ($this
->getFileFieldData($connection) as $field_name) {
$field_table_name = "field_data_{$field_name}";
$data_query = $connection
->select($field_table_name, $field_name);
$data_query
->addField($field_name, "{$field_name}_display", 'display');
$data_query
->addField($field_name, "{$field_name}_description", 'description');
$data_query
->condition("{$field_name}_fid", $file_id);
if (!empty($results = $data_query
->execute()
->fetchAll(\PDO::FETCH_ASSOC))) {
$result = reset($results);
return array_filter($result);
}
}
return [];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FileBase:: |
public | function |
Overrides MediaDealerBase:: |
1 |
FileBase:: |
protected | function | Returns display and description properties of the specified file. | |
FileBase:: |
protected | function | Get the name of the file fields from the source database. | |
FileBase:: |
public | function |
Overrides MediaDealerBase:: |
1 |
MediaDealerBase:: |
protected | property | The entity type manager. | |
MediaDealerBase:: |
protected | property | The field type plugin manager service. | |
MediaDealerBase:: |
protected | property | The media source plugin manager. | |
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
MediaDealerBase:: |
public | function | 4 | |
MediaDealerBase:: |
public | function | 2 | |
MediaDealerBase:: |
public | function | 1 | |
MediaDealerBase:: |
public | function | 3 | |
MediaDealerBase:: |
public | function | 3 | |
MediaDealerBase:: |
public | function | 4 | |
MediaDealerBase:: |
protected | function | Returns alt, title, with and height properties of the specified file. | |
MediaDealerBase:: |
protected | function | Get the names of the image type fields from the source database. | |
MediaDealerBase:: |
protected | function | Returns a media source field instance. | |
MediaDealerBase:: |
protected | function | Returns a media source field storage. | |
MediaDealerBase:: |
public | function | 6 | |
MediaDealerBase:: |
public | function | 2 | |
MediaDealerBase:: |
public | function | 1 | |
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public | function | ||
MediaDealerBase:: |
public | function |
Constructs a new plugin instance. Overrides PluginBase:: |
|
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |