function MediaDevelGenerate::settingsForm

Same name in other branches
  1. 4.x devel_generate/src/Plugin/DevelGenerate/MediaDevelGenerate.php \Drupal\devel_generate\Plugin\DevelGenerate\MediaDevelGenerate::settingsForm()

Overrides DevelGenerateBase::settingsForm

File

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

Class

MediaDevelGenerate
Provides a plugin that generates media entities.

Namespace

Drupal\devel_generate\Plugin\DevelGenerate

Code

public function settingsForm(array $form, FormStateInterface $form_state) : array {
    $types = $this->mediaTypeStorage
        ->loadMultiple();
    if (empty($types)) {
        $create_url = $this->urlGenerator
            ->generateFromRoute('entity.media_type.add_form');
        $this->setMessage($this->t('You do not have any media types that can be generated. <a href=":url">Go create a new media type</a>', [
            ':url' => $create_url,
        ]), MessengerInterface::TYPE_ERROR);
        return [];
    }
    $options = [];
    foreach ($types as $type) {
        $options[$type->id()] = [
            'type' => [
                '#markup' => $type->label(),
            ],
        ];
    }
    $form['media_types'] = [
        '#type' => 'tableselect',
        '#header' => [
            'type' => $this->t('Media type'),
        ],
        '#options' => $options,
    ];
    $form['kill'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('<strong>Delete all media</strong> in these types before generating new media.'),
        '#default_value' => $this->getSetting('kill'),
    ];
    $form['num'] = [
        '#type' => 'number',
        '#title' => $this->t('How many media items would you like to generate?'),
        '#default_value' => $this->getSetting('num'),
        '#required' => TRUE,
        '#min' => 0,
    ];
    $options = [
        1 => $this->t('Now'),
    ];
    foreach ([
        3600,
        86400,
        604800,
        2592000,
        31536000,
    ] as $interval) {
        $options[$interval] = $this->dateFormatter
            ->formatInterval($interval, 1) . ' ' . $this->t('ago');
    }
    $form['time_range'] = [
        '#type' => 'select',
        '#title' => $this->t('How far back in time should the media be dated?'),
        '#description' => $this->t('Media creation dates will be distributed randomly from the current time, back to the selected time.'),
        '#options' => $options,
        '#default_value' => 604800,
    ];
    $form['name_length'] = [
        '#type' => 'number',
        '#title' => $this->t('Maximum number of words in names'),
        '#default_value' => $this->getSetting('name_length'),
        '#required' => TRUE,
        '#min' => 1,
        '#max' => 255,
    ];
    $form['skip_fields'] = [
        '#type' => 'textfield',
        '#title' => $this->t('Fields to leave empty'),
        '#description' => $this->t('Enter the field names as a comma-separated list. These will be skipped and have a default value in the generated content.'),
        '#default_value' => NULL,
    ];
    $form['base_fields'] = [
        '#type' => 'textfield',
        '#title' => $this->t('Base fields to populate'),
        '#description' => $this->t('Enter the field names as a comma-separated list. These will be populated.'),
        '#default_value' => NULL,
    ];
    $options = [];
    // We always need a language.
    $languages = $this->languageManager
        ->getLanguages(LanguageInterface::STATE_ALL);
    foreach ($languages as $langcode => $language) {
        $options[$langcode] = $language->getName();
    }
    $form['add_language'] = [
        '#type' => 'select',
        '#title' => $this->t('Set language on media'),
        '#multiple' => TRUE,
        '#description' => $this->t('Requires locale.module'),
        '#options' => $options,
        '#default_value' => [
            $this->languageManager
                ->getDefaultLanguage()
                ->getId(),
        ],
    ];
    $form['#redirect'] = FALSE;
    return $form;
}