taxonomy_check_vocabulary_hierarchy(VocabularyInterface $vocabulary, $changed_term)
Checks and updates the hierarchy flag of a vocabulary.
Checks the current parents of all terms in a vocabulary and updates the vocabulary's hierarchy setting to the lowest possible level. If no term has parent terms then the vocabulary will be given a hierarchy of VocabularyInterface::HIERARCHY_DISABLED. If any term has a single parent then the vocabulary will be given a hierarchy of VocabularyInterface::HIERARCHY_SINGLE. If any term has multiple parents then the vocabulary will be given a hierarchy of VocabularyInterface::HIERARCHY_MULTIPLE.
Parameters
\Drupal\taxonomy\VocabularyInterface $vocabulary: A taxonomy vocabulary entity.
$changed_term: An array of the term structure that was updated.
Return value
An integer that represents the level of the vocabulary's hierarchy.
File
- core/modules/taxonomy/taxonomy.module, line 160
- Enables the organization of content into categories.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | function taxonomy_check_vocabulary_hierarchy(VocabularyInterface $vocabulary , $changed_term ) { $tree = \Drupal::entityManager()->getStorage( 'taxonomy_term' )->loadTree( $vocabulary ->id()); $hierarchy = VocabularyInterface::HIERARCHY_DISABLED; foreach ( $tree as $term ) { // Update the changed term with the new parent value before comparison. if ( $term ->tid == $changed_term [ 'tid' ]) { $term = (object) $changed_term ; $term ->parents = $term ->parent; } // Check this term's parent count. if ( count ( $term ->parents) > 1) { $hierarchy = VocabularyInterface::HIERARCHY_MULTIPLE; break ; } elseif ( count ( $term ->parents) == 1 && !isset( $term ->parents[0])) { $hierarchy = VocabularyInterface::HIERARCHY_SINGLE; } } if ( $hierarchy != $vocabulary ->getHierarchy()) { $vocabulary ->setHierarchy( $hierarchy ); $vocabulary ->save(); } return $hierarchy ; } |
Please login to continue.