public function SubgroupWizardController::addForm in Subgroup (Graph) 1.0.x
Provides the form for creating a subgroup in a group.
Parameters
\Drupal\group\Entity\GroupInterface $group: The group to create a subgroup in.
\Drupal\group\Entity\GroupTypeInterface $group_type: The subgroup type to create.
Return value
array The form array for either step 1 or 2 of the subgroup creation wizard.
1 string reference to 'SubgroupWizardController::addForm'
File
- src/Controller/ SubgroupWizardController.php, line 106 
Class
- SubgroupWizardController
- Returns responses for 'subgroup' GroupContent routes.
Namespace
Drupal\ggroup\ControllerCode
public function addForm(GroupInterface $group, GroupTypeInterface $group_type) {
  $plugin_id = "subgroup:{$group_type->id()}";
  $storage_id = "{$plugin_id}:{$group->id()}";
  $creation_wizard = $group
    ->getGroupType()
    ->getContentPlugin($plugin_id)
    ->getConfiguration()['use_creation_wizard'];
  // If we are on step one, we need to build a group form.
  if ($this->privateTempStoreFactory
    ->get("{$storage_id}:step") !== 2) {
    $this->privateTempStoreFactory
      ->set("{$storage_id}:step", 1);
    // Only create a new group if we have nothing stored.
    if (!($entity = $this->privateTempStoreFactory
      ->get("{$storage_id}:group"))) {
      $entity = Group::create([
        'type' => $group_type
          ->id(),
      ]);
    }
  }
  else {
    /** @var \Drupal\group\Plugin\GroupContentEnablerInterface $plugin */
    $plugin = $group
      ->getGroupType()
      ->getContentPlugin($plugin_id);
    $entity = GroupContent::create([
      'type' => $plugin
        ->getContentTypeConfigId(),
      'gid' => $group
        ->id(),
    ]);
    if (!$creation_wizard && ($entity = $this->privateTempStoreFactory
      ->get("{$storage_id}:group"))) {
      $entity
        ->save();
      $group
        ->addContent($entity, $plugin_id);
      // We also clear the private store so we can start fresh next time
      // around.
      $this->privateTempStoreFactory
        ->delete("{$storage_id}:step");
      $this->privateTempStoreFactory
        ->delete("{$storage_id}:group");
      return $this
        ->redirect('entity.group.canonical', [
        'group' => $entity
          ->id(),
      ]);
    }
  }
  // Return the form with the group and storage ID added to the form state.
  $extra = [
    'group' => $group,
    'storage_id' => $storage_id,
    'wizard' => $creation_wizard,
  ];
  return $this
    ->entityFormBuilder()
    ->getForm($entity, 'ggroup-form', $extra);
}