Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
CRAP | |
0.00% |
0 / 116 |
| Term | |
0.00% |
0 / 1 |
|
0.00% |
0 / 12 |
342 | |
0.00% |
0 / 116 |
| postDelete | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 17 |
|||
| postSave | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| baseFieldDefinitions | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 71 |
|||
| getDescription | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setDescription | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getFormat | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setFormat | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getName | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setName | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getWeight | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| setWeight | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 3 |
|||
| getVocabularyId | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\taxonomy\Entity\Term. | |
| */ | |
| namespace Drupal\taxonomy\Entity; | |
| use Drupal\Core\Entity\ContentEntityBase; | |
| use Drupal\Core\Entity\EntityChangedTrait; | |
| use Drupal\Core\Entity\EntityStorageInterface; | |
| use Drupal\Core\Entity\EntityTypeInterface; | |
| use Drupal\Core\Field\BaseFieldDefinition; | |
| use Drupal\taxonomy\TermInterface; | |
| /** | |
| * Defines the taxonomy term entity. | |
| * | |
| * @ContentEntityType( | |
| * id = "taxonomy_term", | |
| * label = @Translation("Taxonomy term"), | |
| * bundle_label = @Translation("Vocabulary"), | |
| * handlers = { | |
| * "storage" = "Drupal\taxonomy\TermStorage", | |
| * "storage_schema" = "Drupal\taxonomy\TermStorageSchema", | |
| * "view_builder" = "Drupal\taxonomy\TermViewBuilder", | |
| * "access" = "Drupal\taxonomy\TermAccessControlHandler", | |
| * "views_data" = "Drupal\taxonomy\TermViewsData", | |
| * "form" = { | |
| * "default" = "Drupal\taxonomy\TermForm", | |
| * "delete" = "Drupal\taxonomy\Form\TermDeleteForm" | |
| * }, | |
| * "translation" = "Drupal\taxonomy\TermTranslationHandler" | |
| * }, | |
| * base_table = "taxonomy_term_data", | |
| * data_table = "taxonomy_term_field_data", | |
| * uri_callback = "taxonomy_term_uri", | |
| * translatable = TRUE, | |
| * entity_keys = { | |
| * "id" = "tid", | |
| * "bundle" = "vid", | |
| * "label" = "name", | |
| * "langcode" = "langcode", | |
| * "uuid" = "uuid" | |
| * }, | |
| * bundle_entity_type = "taxonomy_vocabulary", | |
| * field_ui_base_route = "entity.taxonomy_vocabulary.overview_form", | |
| * common_reference_target = TRUE, | |
| * links = { | |
| * "canonical" = "/taxonomy/term/{taxonomy_term}", | |
| * "delete-form" = "/taxonomy/term/{taxonomy_term}/delete", | |
| * "edit-form" = "/taxonomy/term/{taxonomy_term}/edit", | |
| * }, | |
| * permission_granularity = "bundle" | |
| * ) | |
| */ | |
| class Term extends ContentEntityBase implements TermInterface { | |
| use EntityChangedTrait; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function postDelete(EntityStorageInterface $storage, array $entities) { | |
| parent::postDelete($storage, $entities); | |
| // See if any of the term's children are about to be become orphans. | |
| $orphans = array(); | |
| foreach (array_keys($entities) as $tid) { | |
| if ($children = $storage->loadChildren($tid)) { | |
| foreach ($children as $child) { | |
| // If the term has multiple parents, we don't delete it. | |
| $parents = $storage->loadParents($child->id()); | |
| if (empty($parents)) { | |
| $orphans[] = $child->id(); | |
| } | |
| } | |
| } | |
| } | |
| // Delete term hierarchy information after looking up orphans but before | |
| // deleting them so that their children/parent information is consistent. | |
| $storage->deleteTermHierarchy(array_keys($entities)); | |
| if (!empty($orphans)) { | |
| entity_delete_multiple('taxonomy_term', $orphans); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function postSave(EntityStorageInterface $storage, $update = TRUE) { | |
| parent::postSave($storage, $update); | |
| // Only change the parents if a value is set, keep the existing values if | |
| // not. | |
| if (isset($this->parent->target_id)) { | |
| $storage->deleteTermHierarchy(array($this->id())); | |
| $storage->updateTermHierarchy($this); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function baseFieldDefinitions(EntityTypeInterface $entity_type) { | |
| $fields['tid'] = BaseFieldDefinition::create('integer') | |
| ->setLabel(t('Term ID')) | |
| ->setDescription(t('The term ID.')) | |
| ->setReadOnly(TRUE) | |
| ->setSetting('unsigned', TRUE); | |
| $fields['uuid'] = BaseFieldDefinition::create('uuid') | |
| ->setLabel(t('UUID')) | |
| ->setDescription(t('The term UUID.')) | |
| ->setReadOnly(TRUE); | |
| $fields['vid'] = BaseFieldDefinition::create('entity_reference') | |
| ->setLabel(t('Vocabulary')) | |
| ->setDescription(t('The vocabulary to which the term is assigned.')) | |
| ->setSetting('target_type', 'taxonomy_vocabulary'); | |
| $fields['langcode'] = BaseFieldDefinition::create('language') | |
| ->setLabel(t('Language')) | |
| ->setDescription(t('The term language code.')) | |
| ->setTranslatable(TRUE) | |
| ->setDisplayOptions('view', array( | |
| 'type' => 'hidden', | |
| )) | |
| ->setDisplayOptions('form', array( | |
| 'type' => 'language_select', | |
| 'weight' => 2, | |
| )); | |
| $fields['name'] = BaseFieldDefinition::create('string') | |
| ->setLabel(t('Name')) | |
| ->setDescription(t('The term name.')) | |
| ->setTranslatable(TRUE) | |
| ->setRequired(TRUE) | |
| ->setSetting('max_length', 255) | |
| ->setDisplayOptions('view', array( | |
| 'label' => 'hidden', | |
| 'type' => 'string', | |
| 'weight' => -5, | |
| )) | |
| ->setDisplayOptions('form', array( | |
| 'type' => 'string_textfield', | |
| 'weight' => -5, | |
| )) | |
| ->setDisplayConfigurable('form', TRUE); | |
| $fields['description'] = BaseFieldDefinition::create('text_long') | |
| ->setLabel(t('Description')) | |
| ->setDescription(t('A description of the term.')) | |
| ->setTranslatable(TRUE) | |
| ->setDisplayOptions('view', array( | |
| 'label' => 'hidden', | |
| 'type' => 'text_default', | |
| 'weight' => 0, | |
| )) | |
| ->setDisplayConfigurable('view', TRUE) | |
| ->setDisplayOptions('form', array( | |
| 'type' => 'text_textfield', | |
| 'weight' => 0, | |
| )) | |
| ->setDisplayConfigurable('form', TRUE); | |
| $fields['weight'] = BaseFieldDefinition::create('integer') | |
| ->setLabel(t('Weight')) | |
| ->setDescription(t('The weight of this term in relation to other terms.')) | |
| ->setDefaultValue(0); | |
| $fields['parent'] = BaseFieldDefinition::create('entity_reference') | |
| ->setLabel(t('Term Parents')) | |
| ->setDescription(t('The parents of this term.')) | |
| ->setSetting('target_type', 'taxonomy_term') | |
| ->setCardinality(BaseFieldDefinition::CARDINALITY_UNLIMITED) | |
| ->setCustomStorage(TRUE); | |
| $fields['changed'] = BaseFieldDefinition::create('changed') | |
| ->setLabel(t('Changed')) | |
| ->setDescription(t('The time that the term was last edited.')) | |
| ->setTranslatable(TRUE); | |
| return $fields; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getDescription() { | |
| return $this->get('description')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setDescription($description) { | |
| $this->set('description', $description); | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getFormat() { | |
| return $this->get('description')->format; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setFormat($format) { | |
| $this->get('description')->format = $format; | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getName() { | |
| return $this->label(); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setName($name) { | |
| $this->set('name', $name); | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getWeight() { | |
| return $this->get('weight')->value; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function setWeight($weight) { | |
| $this->set('weight', $weight); | |
| return $this; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getVocabularyId() { | |
| return $this->get('vid')->target_id; | |
| } | |
| } |