You are here

public function MediaDevelGenerate::validateDrushParams in Devel 4.x

Same name and namespace in other branches
  1. 8.3 devel_generate/src/Plugin/DevelGenerate/MediaDevelGenerate.php \Drupal\devel_generate\Plugin\DevelGenerate\MediaDevelGenerate::validateDrushParams()

Responsible for validating Drush params.

Parameters

array $args: The command arguments.

array $options: The commend options.

Return value

array An array of values ready to be used for generateElements().

Overrides DevelGenerateBaseInterface::validateDrushParams

File

devel_generate/src/Plugin/DevelGenerate/MediaDevelGenerate.php, line 400

Class

MediaDevelGenerate
Provides a plugin that generates media entities.

Namespace

Drupal\devel_generate\Plugin\DevelGenerate

Code

public function validateDrushParams(array $args, array $options = []) {
  $add_language = $options['languages'];
  if (!empty($add_language)) {
    $add_language = explode(',', str_replace(' ', '', $add_language));

    // Intersect with the enabled languages to make sure the language args
    // passed are actually enabled.
    $values['values']['add_language'] = array_intersect($add_language, array_keys($this->languageManager
      ->getLanguages(LanguageInterface::STATE_ALL)));
  }
  $values['kill'] = $options['kill'];
  $values['feedback'] = $options['feedback'];
  $values['name_length'] = 6;
  $values['num'] = array_shift($args);
  $all_media_types = array_values($this->mediaTypeStorage
    ->getQuery()
    ->execute());
  $requested_media_types = StringUtils::csvToArray($options['media-types'] ?: $all_media_types);
  if (empty($requested_media_types)) {
    throw new \Exception(dt('No media types available'));
  }

  // Check for any missing media type.
  if ($invalid_media_types = array_diff($requested_media_types, $all_media_types)) {
    throw new \Exception("Requested media types don't exists: " . implode(', ', $invalid_media_types));
  }
  $values['media_types'] = array_combine($requested_media_types, $requested_media_types);
  if ($this
    ->isBatch($values['num'])) {
    $this->drushBatch = TRUE;
    $this
      ->preGenerate($values);
  }
  return $values;
}