public function GroupTypeManager::addGroup in Organic groups 8
Declares a bundle of an entity type as being an OG group.
Parameters
string $entity_type_id: The entity type ID of the bundle to declare as being a group.
string $bundle_id: The bundle ID of the bundle to declare as being a group.
Throws
\InvalidArgumentException Thrown when the given bundle is already a group.
Overrides GroupTypeManagerInterface::addGroup
File
- src/
GroupTypeManager.php, line 262
Class
- GroupTypeManager
- A manager to keep track of which entity type/bundles are OG group enabled.
Namespace
Drupal\ogCode
public function addGroup($entity_type_id, $bundle_id) {
// Throw an error if the entity type is already defined as a group.
if ($this
->isGroup($entity_type_id, $bundle_id)) {
throw new \InvalidArgumentException("The '{$entity_type_id}' of type '{$bundle_id}' is already a group.");
}
$editable = $this->configFactory
->getEditable('og.settings');
$groups = $editable
->get('groups');
$groups[$entity_type_id][] = $bundle_id;
// @todo Key by bundle ID instead?
$groups[$entity_type_id] = array_unique($groups[$entity_type_id]);
$editable
->set('groups', $groups);
$editable
->save();
// Trigger an event upon the new group creation.
$event = new GroupCreationEvent($entity_type_id, $bundle_id);
$this->eventDispatcher
->dispatch(GroupCreationEventInterface::EVENT_NAME, $event);
$this->ogRoleManager
->createPerBundleRoles($entity_type_id, $bundle_id);
$this
->refreshGroupMap();
// Routes will need to be rebuilt.
$this->routeBuilder
->setRebuildNeeded();
}