Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 43 |
| Vocabulary | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
182 | |
0.00% |
0 / 43 |
| getHierarchy | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setHierarchy | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| id | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| getDescription | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| preDelete | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| postDelete | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 31 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\taxonomy\Entity\Vocabulary. | |
| */ | |
| namespace Drupal\taxonomy\Entity; | |
| use Drupal\Core\Config\Entity\ConfigEntityBundleBase; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\taxonomy\VocabularyInterface; | |
| /** | |
| * Defines the taxonomy vocabulary entity. | |
| * | |
| * @ConfigEntityType( | |
| * id = "taxonomy_vocabulary", | |
| * label = @Translation("Taxonomy vocabulary"), | |
| * handlers = { | |
| * "storage" = "Drupal\taxonomy\VocabularyStorage", | |
| * "list_builder" = "Drupal\taxonomy\VocabularyListBuilder", | |
| * "form" = { | |
| * "default" = "Drupal\taxonomy\VocabularyForm", | |
| * "reset" = "Drupal\taxonomy\Form\VocabularyResetForm", | |
| * "delete" = "Drupal\taxonomy\Form\VocabularyDeleteForm" | |
| * } | |
| * }, | |
| * 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/manage/{taxonomy_vocabulary}/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}", | |
| * "collection" = "/admin/structure/taxonomy", | |
| * }, | |
| * config_export = { | |
| * "name", | |
| * "vid", | |
| * "description", | |
| * "hierarchy", | |
| * "weight", | |
| * } | |
| * ) | |
| */ | |
| 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 type of hierarchy allowed within the vocabulary. | |
| * | |
| * Possible values: | |
| * - TAXONOMY_HIERARCHY_DISABLED: No parents. | |
| * - TAXONOMY_HIERARCHY_SINGLE: Single parent. | |
| * - TAXONOMY_HIERARCHY_MULTIPLE: Multiple parents. | |
| * | |
| * @var int | |
| */ | |
| protected $hierarchy = TAXONOMY_HIERARCHY_DISABLED; | |
| /** | |
| * The weight of this vocabulary in relation to other vocabularies. | |
| * | |
| * @var int | |
| */ | |
| protected $weight = 0; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getHierarchy() { | |
| return $this->hierarchy; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setHierarchy($hierarchy) { | |
| $this->hierarchy = $hierarchy; | |
| return $this; | |
| } | |
| /** | |
| * {@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. | |
| entity_delete_multiple('taxonomy_term', $storage->getToplevelTids(array_keys($entities))); | |
| } | |
| /** | |
| * {@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 = array(); | |
| foreach ($entities as $vocabulary) { | |
| $vocabularies[$vocabulary->id()] = $vocabulary->id(); | |
| } | |
| // Load all Taxonomy module fields and delete those which use only this | |
| // vocabulary. | |
| $field_storages = entity_load_multiple_by_properties('field_storage_config', array('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(); | |
| } | |
| } | |
| } | |
| } | |
| } |