diff --git a/includes/media_browser_plus.folders.inc b/includes/media_browser_plus.folders.inc index fd7c99d..1001439 100644 --- a/includes/media_browser_plus.folders.inc +++ b/includes/media_browser_plus.folders.inc @@ -245,8 +245,8 @@ function media_browser_plus_folder_edit($form, &$form_state, $folder) { ), 'pid' => array( '#type' => 'select', - '#title' => t('Parent Category'), - '#options' => media_browser_plus_folder_get_folders(), + '#title' => t('Parent Category'), + '#options' => media_browser_plus_folder_get_folders($folder->tid), '#default_value' => count($parents) ? array_pop($parents_keys) : 0, '#description' => t('Sets one parent folder for the new folder'), ), @@ -513,11 +513,24 @@ function media_browser_plus_move_subfolder($folder, $source, $destination) { /** * @todo Document what this function is does. */ -function media_browser_plus_folder_get_folders() { +function media_browser_plus_folder_get_folders($tid = NULL) { $vocabulary = taxonomy_vocabulary_machine_name_load('media_folders'); + + $exclude = array(); + if(!is_null($tid)) { + $children = taxonomy_get_tree($vocabulary->vid, $tid); + // A term can't be the child of itself, nor of its children. + foreach ($children as $child) { + $exclude[] = $child->tid; + } + $exclude[] = $tid; + } + $folders = array(0 => '> ' . t('No Parent') . ' <'); foreach (taxonomy_get_tree($vocabulary->vid) as $key => $value) { - $folders[$value->tid] = str_pad('', $value->depth, '-') . $value->name; + if(!in_array($value->tid, $exclude)) { + $folders[$value->tid] = str_pad('', $value->depth, '-') . $value->name; + } } return $folders; }