function ImageStyleMappings::transform

Same name and namespace in other branches
  1. 9 core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php \Drupal\responsive_image\Plugin\migrate\process\ImageStyleMappings::transform()
  2. 11.x core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php \Drupal\responsive_image\Plugin\migrate\process\ImageStyleMappings::transform()

Overrides ProcessPluginBase::transform

File

core/modules/responsive_image/src/Plugin/migrate/process/ImageStyleMappings.php, line 20

Class

ImageStyleMappings
Transforms image style mappings.

Namespace

Drupal\responsive_image\Plugin\migrate\process

Code

public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
  if (!is_array($value)) {
    throw new MigrateException('Input should be an array');
  }
  [
    $mappings,
    $breakpoint_group,
  ] = $value;
  $new_value = [];
  foreach ($mappings as $mapping_id => $mapping) {
    // The id is in the key with the form
    // "breakpoints.theme.my_theme_id.image_style_machine_name". We want the
    // identifier after the last period.
    preg_match('/\\.([a-z0-9_]+)$/', $mapping_id, $matches);
    foreach ($mapping as $multiplier => $multiplier_settings) {
      if ($multiplier_settings['mapping_type'] == '_none') {
        continue;
      }
      $image_style = [
        'breakpoint_id' => $breakpoint_group . '.' . $matches[1],
        'multiplier' => $multiplier,
        'image_mapping_type' => $multiplier_settings['mapping_type'],
        'image_mapping' => $this->getMultiplierSettings($multiplier_settings),
      ];
      $new_value[] = $image_style;
    }
  }
  return $new_value;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.