public function EntityTypeBundleInfo::getAllBundleInfo

public EntityTypeBundleInfo::getAllBundleInfo()

Get the bundle info of all entity types.

Return value

array An array of bundle information where the outer array is keyed by entity type. The next level is keyed by the bundle name. The inner arrays are associative arrays of bundle information, such as the label for the bundle.

Overrides EntityTypeBundleInfoInterface::getAllBundleInfo

File

core/lib/Drupal/Core/Entity/EntityTypeBundleInfo.php, line 87

Class

EntityTypeBundleInfo
Provides discovery and retrieval of entity type bundles.

Namespace

Drupal\Core\Entity

Code

public function getAllBundleInfo() {
  if (empty($this->bundleInfo)) {
    $langcode = $this->languageManager->getCurrentLanguage()->getId();
    if ($cache = $this->cacheGet("entity_bundle_info:$langcode")) {
      $this->bundleInfo = $cache->data;
    }
    else {
      $this->bundleInfo = $this->moduleHandler->invokeAll('entity_bundle_info');
      foreach ($this->entityTypeManager->getDefinitions() as $type => $entity_type) {
        // First look for entity types that act as bundles for others, load them
        // and add them as bundles.
        if ($bundle_entity_type = $entity_type->getBundleEntityType()) {
          foreach ($this->entityTypeManager->getStorage($bundle_entity_type)->loadMultiple() as $entity) {
            $this->bundleInfo[$type][$entity->id()]['label'] = $entity->label();
          }
        }
        // If entity type bundles are not supported and
        // hook_entity_bundle_info() has not already set up bundle
        // information, use the entity type name and label.
        elseif (!isset($this->bundleInfo[$type])) {
          $this->bundleInfo[$type][$type]['label'] = $entity_type->getLabel();
        }
      }
      $this->moduleHandler->alter('entity_bundle_info', $this->bundleInfo);
      $this->cacheSet("entity_bundle_info:$langcode", $this->bundleInfo, Cache::PERMANENT, ['entity_types', 'entity_bundles']);
    }
  }

  return $this->bundleInfo;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!EntityTypeBundleInfo.php/function/EntityTypeBundleInfo::getAllBundleInfo/8.1.x