function BlockContentDevelGenerate::develGenerateContentAddBlock

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

Parameters

array $results: Results information.

2 calls to BlockContentDevelGenerate::develGenerateContentAddBlock()
BlockContentDevelGenerate::batchContentAddBlock in devel_generate/src/Plugin/DevelGenerate/BlockContentDevelGenerate.php
Batch wrapper for calling ContentAddBlock.
BlockContentDevelGenerate::generateContent in devel_generate/src/Plugin/DevelGenerate/BlockContentDevelGenerate.php
Generate content when not in batch mode.

File

devel_generate/src/Plugin/DevelGenerate/BlockContentDevelGenerate.php, line 360

Class

BlockContentDevelGenerate
Provides a BlockContentDevelGenerate plugin.

Namespace

Drupal\devel_generate\Plugin\DevelGenerate

Code

protected function develGenerateContentAddBlock(array &$results) : void {
  if (!isset($results['time_range'])) {
    $results['time_range'] = 0;
  }
  $block_type = array_rand($results['block_types']);
  // Add the block type label if required.
  $title_prefix = $results['add_type_label'] ? $this->blockContentTypeStorage
    ->load($block_type)
    ->label() . ' - ' : '';
  $values = [
    'info' => $title_prefix . $this->getRandom()
      ->sentences(mt_rand(1, $results['title_length']), TRUE),
    'type' => $block_type,
    // A flag to let hook_block_content_insert() implementations know that this is a generated block.
'devel_generate' => $results,
  ];
  if (isset($results['add_language'])) {
    $values['langcode'] = $this->getLangcode($results['add_language']);
  }
  if (isset($results['reusable'])) {
    $values['reusable'] = (int) $results['reusable'];
  }
  /** @var \Drupal\block_content\BlockContentInterface $block */
  $block = $this->blockContentStorage
    ->create($values);
  // Populate non-skipped fields with sample values.
  $this->populateFields($block, $results['skip_fields'], $results['base_fields']);
  // Remove the fields which are intended to have no value.
  foreach ($results['skip_fields'] as $field) {
    unset($block->{$field});
  }
  $block->save();
  // Add translations.
  $this->develGenerateContentAddBlockTranslation($results, $block);
}