function taxonomy_manager_check_circular_hierarchy in Taxonomy Manager 6.2
Same name and namespace in other branches
- 7 taxonomy_manager.admin.inc \taxonomy_manager_check_circular_hierarchy()
checks for circles in the hierarchy, e.g. 1 -> 2 -> 3 -> 1 a term can't contain itself as a parent
returns TRUE if resulting hierarchy is valid, else FALSE
4 calls to taxonomy_manager_check_circular_hierarchy()
- taxonomy_manager_double_tree_edit_move in ./
taxonomy_manager.admin.inc - taxonomy_manager_form_merge_validate in ./
taxonomy_manager.admin.inc - Validation handler for validating terms
- taxonomy_manager_form_move_validate in ./
taxonomy_manager.admin.inc - Validation handler for moving terms
- taxonomy_manager_term_data_edit in ./
taxonomy_manager.admin.inc - callback handler for updating term data
File
- ./
taxonomy_manager.admin.inc, line 1327 - Taxonomy Manager Admin
Code
function taxonomy_manager_check_circular_hierarchy($tids, $new_parents_tids) {
if (is_array($tids) && is_array($new_parents_tids)) {
//directly same term
foreach ($tids as $tid) {
if (in_array($tid, $new_parents_tids)) {
return FALSE;
}
}
//same term over more hierarchy levels
$all_parents = array();
foreach ($new_parents_tids as $parent_tid) {
$parents = taxonomy_get_parents_all($parent_tid);
foreach ($parents as $parent) {
$all_parents[$parent->tid] = $parent->tid;
}
}
foreach ($tids as $tid) {
if (in_array($tid, $all_parents)) {
return FALSE;
}
}
}
return TRUE;
}