You are here

public function GlobalTemplateCollectionManager::createGlobalCollectionForLocalCollection in Courier 2.x

Same name and namespace in other branches
  1. 8 src/Service/GlobalTemplateCollectionManager.php \Drupal\courier\Service\GlobalTemplateCollectionManager::createGlobalCollectionForLocalCollection()

Create a global template collection and associate it with a template collection.

Parameters

\Drupal\courier\TemplateCollectionInterface $template_collection: A local template collection entity.

array $defaults: Default values to add to the new global template collection. This value must contain a 'id' key which does not conflict with existing global template collections.

Return value

\Drupal\courier\Entity\GlobalTemplateCollectionInterface A new and saved global template collection.

Throws

\Drupal\courier\Exception\GlobalTemplateCollectionException Thrown if passed template collection is unsaved.

Overrides GlobalTemplateCollectionManagerInterface::createGlobalCollectionForLocalCollection

File

src/Service/GlobalTemplateCollectionManager.php, line 74

Class

GlobalTemplateCollectionManager
The global template collection manager.

Namespace

Drupal\courier\Service

Code

public function createGlobalCollectionForLocalCollection(TemplateCollectionInterface $template_collection, array $defaults = []) {
  if ($template_collection
    ->isNew()) {
    throw new GlobalTemplateCollectionException('Template collection must be saved to instantiate a new global template collection.');
  }
  $global_template_collection = GlobalTemplateCollection::create($defaults);
  foreach ($template_collection
    ->getTemplates() as $template) {
    $contents = $template
      ->exportTemplate();
    $global_template_collection
      ->setTemplate($template
      ->getEntityTypeId(), $contents);
  }
  $global_template_collection
    ->save();
  $this->keyValueStore
    ->set($global_template_collection
    ->id(), $template_collection
    ->id());
  return $global_template_collection;
}