function MediaDevelGenerate::createMediaItem

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

Create one media item. Used by both batch and non-batch code branches.

Parameters

array $results: The input values from the settings form.

Throws

\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException Thrown if the storage handler couldn't be loaded.

\Drupal\Component\Plugin\Exception\PluginNotFoundException Thrown if the entity type doesn't exist.

\Drupal\Core\Entity\EntityStorageException Thrown if the bundle does not exist or was needed but not specified.

2 calls to MediaDevelGenerate::createMediaItem()
MediaDevelGenerate::batchCreateMediaItem in devel_generate/src/Plugin/DevelGenerate/MediaDevelGenerate.php
Provides a batch version of createMediaItem().
MediaDevelGenerate::generateMedia in devel_generate/src/Plugin/DevelGenerate/MediaDevelGenerate.php
Method for creating media when number of elements is less than 50.

File

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

Class

MediaDevelGenerate
Provides a plugin that generates media entities.

Namespace

Drupal\devel_generate\Plugin\DevelGenerate

Code

protected function createMediaItem(array &$results) : void {
    if (!isset($results['time_range'])) {
        $results['time_range'] = 0;
    }
    $media_type = array_rand($results['media_types']);
    $uid = $results['users'][array_rand($results['users'])];
    $media = $this->mediaStorage
        ->create([
        'bundle' => $media_type,
        'name' => $this->getRandom()
            ->sentences(mt_rand(1, $results['name_length']), TRUE),
        'uid' => $uid,
        'revision' => mt_rand(0, 1),
        'status' => TRUE,
        'moderation_state' => 'published',
        'created' => $this->time
            ->getRequestTime() - mt_rand(0, $results['time_range']),
        'langcode' => $this->getLangcode($results),
        // A flag to let hook implementations know that this is a generated item.
'devel_generate' => $results,
    ]);
    // Populate all non-skipped fields with sample values.
    $this->populateFields($media, $results['skip_fields'], $results['base_fields']);
    // Remove the fields which are intended to have no value.
    foreach ($results['skip_fields'] as $field) {
        unset($media->{$field});
    }
    $media->save();
}