/**
  * Generate an array of all categories the user can navigate to
  */
 public function get_tree()
 {
     $targets = array();
     $level = 0;
     $root = array(0, get_lang('RootCat'), $level);
     $targets[] = $root;
     // course or platform admin
     if (api_is_allowed_to_edit()) {
         $user = api_is_platform_admin() ? null : api_get_user_id();
         $cats = Category::get_root_categories_for_teacher($user);
         foreach ($cats as $cat) {
             $targets[] = array($cat->get_id(), $cat->get_name(), $level + 1);
             $targets = Category::add_subtree($targets, $level + 1, $cat->get_id(), null);
         }
     } else {
         // student
         $cats = Category::get_root_categories_for_student(api_get_user_id());
         foreach ($cats as $cat) {
             $targets[] = array($cat->get_id(), $cat->get_name(), $level + 1);
             $targets = Category::add_subtree($targets, $level + 1, $cat->get_id(), 1);
         }
     }
     return $targets;
 }