class Vocabulary

Same name in this branch
  1. 9 core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d6\Vocabulary
  2. 9 core/modules/taxonomy/src/Plugin/migrate/source/d7/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d7\Vocabulary
Same name and namespace in other branches
  1. 11.x core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary
  2. 11.x core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d6\Vocabulary
  3. 11.x core/modules/taxonomy/src/Plugin/migrate/source/d7/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d7\Vocabulary
  4. 10 core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary
  5. 10 core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d6\Vocabulary
  6. 10 core/modules/taxonomy/src/Plugin/migrate/source/d7/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d7\Vocabulary
  7. 8.9.x core/modules/taxonomy/src/Entity/Vocabulary.php \Drupal\taxonomy\Entity\Vocabulary
  8. 8.9.x core/modules/taxonomy/src/Plugin/migrate/source/d6/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d6\Vocabulary
  9. 8.9.x core/modules/taxonomy/src/Plugin/migrate/source/d7/Vocabulary.php \Drupal\taxonomy\Plugin\migrate\source\d7\Vocabulary

Defines the taxonomy vocabulary entity.

Plugin annotation


@ConfigEntityType(
  id = "taxonomy_vocabulary",
  label = @Translation("Taxonomy vocabulary"),
  label_singular = @Translation("vocabulary"),
  label_plural = @Translation("vocabularies"),
  label_collection = @Translation("Taxonomy"),
  label_count = @PluralTranslation(
    singular = "@count vocabulary",
    plural = "@count vocabularies"
  ),
  handlers = {
    "storage" = "Drupal\taxonomy\VocabularyStorage",
    "list_builder" = "Drupal\taxonomy\VocabularyListBuilder",
    "access" = "Drupal\taxonomy\VocabularyAccessControlHandler",
    "form" = {
      "default" = "Drupal\taxonomy\VocabularyForm",
      "reset" = "Drupal\taxonomy\Form\VocabularyResetForm",
      "delete" = "Drupal\taxonomy\Form\VocabularyDeleteForm",
      "overview" = "Drupal\taxonomy\Form\OverviewTerms"
    },
    "route_provider" = {
      "html" = "Drupal\taxonomy\Entity\Routing\VocabularyRouteProvider",
      "permissions" = "Drupal\user\Entity\EntityPermissionsRouteProvider",
    }
  },
  admin_permission = "administer taxonomy",
  config_prefix = "vocabulary",
  bundle_of = "taxonomy_term",
  entity_keys = {
    "id" = "vid",
    "label" = "name",
    "weight" = "weight"
  },
  links = {
    "add-form" = "/admin/structure/taxonomy/add",
    "delete-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}/delete",
    "reset-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}/reset",
    "overview-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}/overview",
    "edit-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}",
    "entity-permissions-form" = "/admin/structure/taxonomy/manage/{taxonomy_vocabulary}/overview/permissions",
    "collection" = "/admin/structure/taxonomy",
  },
  config_export = {
    "name",
    "vid",
    "description",
    "weight",
  }
)

Hierarchy

Expanded class hierarchy of Vocabulary

65 files declare their use of Vocabulary
ArgumentValidatorTermNameTest.php in core/modules/taxonomy/tests/src/Kernel/Views/ArgumentValidatorTermNameTest.php
CommentTokenReplaceTest.php in core/modules/comment/tests/src/Functional/CommentTokenReplaceTest.php
ConfigTranslationListUiTest.php in core/modules/config_translation/tests/src/Functional/ConfigTranslationListUiTest.php
ContentEntityTest.php in core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php
CreateSampleEntityTest.php in core/tests/Drupal/KernelTests/Core/Entity/CreateSampleEntityTest.php

... See full list

39 string references to 'Vocabulary'
DependencyTest::testUninstallDependents in core/modules/system/tests/src/Functional/Module/DependencyTest.php
Tests attempting to uninstall a module that has installed dependents.
drupal6.php in core/modules/migrate_drupal/tests/fixtures/drupal6.php
A database agnostic dump for testing purposes.
drupal6.php in core/modules/aggregator/tests/fixtures/drupal6.php
A database agnostic dump for testing purposes.
ForumBreadcrumbBuilderBase::build in core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
ForumController::addContainer in core/modules/forum/src/Controller/ForumController.php
Returns add container entity form.

... See full list

File

core/modules/taxonomy/src/Entity/Vocabulary.php, line 62

Namespace

Drupal\taxonomy\Entity
View source
class Vocabulary extends ConfigEntityBundleBase implements VocabularyInterface {
  
  /**
   * The taxonomy vocabulary ID.
   *
   * @var string
   */
  protected $vid;
  
  /**
   * Name of the vocabulary.
   *
   * @var string
   */
  protected $name;
  
  /**
   * Description of the vocabulary.
   *
   * @var string
   */
  protected $description;
  
  /**
   * The weight of this vocabulary in relation to other vocabularies.
   *
   * @var int
   */
  protected $weight = 0;
  
  /**
   * {@inheritdoc}
   */
  public function id() {
    return $this->vid;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getDescription() {
    return $this->description;
  }
  
  /**
   * {@inheritdoc}
   */
  public static function preDelete(EntityStorageInterface $storage, array $entities) {
    parent::preDelete($storage, $entities);
    // Only load terms without a parent, child terms will get deleted too.
    $term_storage = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
    $terms = $term_storage->loadMultiple($storage->getToplevelTids(array_keys($entities)));
    $term_storage->delete($terms);
  }
  
  /**
   * {@inheritdoc}
   */
  public static function postDelete(EntityStorageInterface $storage, array $entities) {
    parent::postDelete($storage, $entities);
    // Reset caches.
    $storage->resetCache(array_keys($entities));
    if (reset($entities)->isSyncing()) {
      return;
    }
    $vocabularies = [];
    foreach ($entities as $vocabulary) {
      $vocabularies[$vocabulary->id()] = $vocabulary->id();
    }
    // Load all Taxonomy module fields and delete those which use only this
    // vocabulary.
    $field_storages = \Drupal::entityTypeManager()->getStorage('field_storage_config')
      ->loadByProperties([
      'module' => 'taxonomy',
    ]);
    foreach ($field_storages as $field_storage) {
      $modified_storage = FALSE;
      // Term reference fields may reference terms from more than one
      // vocabulary.
      foreach ($field_storage->getSetting('allowed_values') as $key => $allowed_value) {
        if (isset($vocabularies[$allowed_value['vocabulary']])) {
          $allowed_values = $field_storage->getSetting('allowed_values');
          unset($allowed_values[$key]);
          $field_storage->setSetting('allowed_values', $allowed_values);
          $modified_storage = TRUE;
        }
      }
      if ($modified_storage) {
        $allowed_values = $field_storage->getSetting('allowed_values');
        if (empty($allowed_values)) {
          $field_storage->delete();
        }
        else {
          // Update the field definition with the new allowed values.
          $field_storage->save();
        }
      }
    }
  }

}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.