You are here

class FilePlainFieldFormatter in Media Migration 8

Drupal 7 media field formatter settings source based on source database.

Plugin annotation


@MigrateSource(
  id = "d7_file_plain_field_formatter",
  source_module = "file"
)

Hierarchy

Expanded class hierarchy of FilePlainFieldFormatter

File

src/Plugin/migrate/source/d7/FilePlainFieldFormatter.php, line 15

Namespace

Drupal\media_migration\Plugin\migrate\source\d7
View source
class FilePlainFieldFormatter extends FilePlainConfigSourceBase {

  /**
   * {@inheritdoc}
   */
  protected function initializeIterator() {

    // Media Migration wants to hide "created", "name", "thumbnail" and "uid"
    // base fields for the default view mode.
    // @see \Drupal\media\Entity\Media
    $iterator = parent::initializeIterator();
    $rows = [];
    foreach ($iterator
      ->getArrayCopy() as $item) {
      [
        'source_field_name' => $source_field_name,
      ] = $item;
      $field_names = [
        $source_field_name => FALSE,
        'created' => TRUE,
        'name' => TRUE,
        'thumbnail' => TRUE,
        'uid' => TRUE,
      ];
      foreach ($field_names as $field_name => $hidden) {
        $rows[] = [
          'field_name' => $field_name,
          'hidden' => $hidden,
        ] + $item;
      }
    }
    return new \ArrayIterator($rows);
  }

  /**
   * {@inheritdoc}
   */
  public function prepareRow(Row $row) {
    [
      'mimes' => $mimes,
      'schemes' => $schemes,
      'source_field_name' => $source_field_name,
      'field_name' => $field_name,
    ] = $row
      ->getSource();
    if ($field_name === $source_field_name) {
      $mime = explode(static::MULTIPLE_SEPARATOR, $mimes)[0];
      $scheme = explode(static::MULTIPLE_SEPARATOR, $schemes)[0];
      if (!($dealer_plugin = $this->fileDealerManager
        ->createInstanceFromSchemeAndMime($scheme, $mime))) {
        return FALSE;
      }
      $dealer_plugin
        ->prepareMediaSourceFieldFormatterRow($row, $this
        ->getDatabase());
    }
    return parent::prepareRow($row);
  }

  /**
   * {@inheritdoc}
   */
  public function fields() {
    return [
      'field_name' => $this
        ->t('Name of the field.'),
      'options' => $this
        ->t('Configuration options of the source field widget.'),
      'hidden' => $this
        ->t('Whether the field is hidden or not.'),
    ] + parent::fields();
  }

  /**
   * {@inheritdoc}
   */
  public function getIds() {
    return [
      'field_name' => [
        'type' => 'string',
      ],
    ] + parent::getIds();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigSourceBase::MULTIPLE_SEPARATOR constant
FilePlainConfigSourceBase::$fileDealerManager protected property The file dealer plugin manager.
FilePlainConfigSourceBase::$sourceHasFileEntities protected property Whether the source has (fieldable) file entities or not.
FilePlainConfigSourceBase::create public static function
FilePlainConfigSourceBase::prepareQuery protected function
FilePlainConfigSourceBase::query public function 1
FilePlainConfigSourceBase::__construct public function Constructs a plugin instance.
FilePlainFieldFormatter::fields public function Overrides FilePlainConfigSourceBase::fields
FilePlainFieldFormatter::getIds public function Overrides FilePlainConfigSourceBase::getIds
FilePlainFieldFormatter::initializeIterator protected function Overrides FilePlainConfigSourceBase::initializeIterator
FilePlainFieldFormatter::prepareRow public function
MediaMigrationDatabaseTrait::getExtensionExpression protected function Returns the file extension expression for the current DB.
MediaMigrationDatabaseTrait::getFileEntityBaseQuery protected function Returns a base query for file entity types.
MediaMigrationDatabaseTrait::getFilePlainBaseQuery protected function Returns a base query for plain files.
MediaMigrationDatabaseTrait::getMainMimeTypeExpression protected function Returns the main MIME type's expression for the current DB.
MediaMigrationDatabaseTrait::getSchemeExpression protected function Returns the expression for the DB for getting the URI scheme.
MediaMigrationDatabaseTrait::getUserPictureOnlyFidsQuery protected function Returns the subquery for the user picture-only file IDs.
MediaMigrationDatabaseTrait::getWebformOrUserPictureOnlyFidsQuery protected function Subquery for FIDs used only in webform submissions and/or by user entities.