function getDataset(&$counter, $params = array())
 {
     $params['depth'] = 1;
     if (Limb::toolkit()->getRequest()->get('only_parents') == 'false') {
         $params['only_parents'] = false;
     } else {
         $params['only_parents'] = true;
     }
     $params['restrict_by_class'] = false;
     $params['path'] = $this->_processPath();
     return parent::getDataset($counter, $params);
 }
 protected function _fetch(&$counter, $params)
 {
     $result = parent::_fetch($counter, $params);
     $uri = new Uri($_SERVER['PHP_SELF']);
     foreach ($result as $key => $data) {
         $nav_uri = new Uri($data['url']);
         if ($uri->getHost() != $nav_uri->getHost()) {
             continue;
         }
         if (is_integer($res = $uri->comparePath($nav_uri))) {
             if ($res >= 0) {
                 $result[$key]['in_path'] = true;
             }
             if ($res == 0) {
                 $result[$key]['selected'] = true;
             }
         }
     }
     return $result;
 }
  protected function fetch()
  {
    $tree = Limb :: toolkit()->getTree();

    if(isset($params['order']))
    {
      $order = $params['order'];
      unset($params['order']);
    }
    else
      $order = array('priority' => 'ASC');

    $tree_array = parent :: fetch();
    $tree_array = TreeSorter :: sort($tree_array, $order, 'node_id', 'parent_node_id');

    $path_node = $tree->getNodeByPath($params['path']);
    if (isset($params['include_parent']) &&  (bool)$params['include_parent'])
      $path_node_level = $path_node['level'] - 1;
    else
      $path_node_level = $path_node['level'];

    $levels_status_array = array();
    $size = count($tree_array);
    $current_pos = 0;

    $parent_data = array();

    foreach($tree_array as $id => $tree_item)
    {
      $parent_node_id = $tree_item['parent_node_id'];
      if(!isset($parent_data[$parent_node_id]))
      {
        if($parent_node_id == 0)
          $parent_data[$parent_node_id]['children_amount'] = 1;
        else
          $parent_data[$parent_node_id]['children_amount'] = $tree->countChildren($parent_node_id);

        $parent_data[$parent_node_id]['counter'] = 0;
      }

      $parent_data[$parent_node_id]['counter']++;

      if ($parent_data[$parent_node_id]['counter'] == 1)
        $is_first_child = true;
      else
        $is_first_child = false;

      if($parent_data[$parent_node_id]['counter'] == $parent_data[$parent_node_id]['children_amount'])
        $is_last_child = true;
      else
        $is_last_child = false;

      $tree_array[$id]['level'] = $tree_array[$id]['level'] - $path_node_level;
      $levels_status_array[$tree_item['level'] - $path_node_level] = $is_last_child;

      $tree_array[$id]['level_' . $tree_array[$id]['level']] = 1;

      $tree_array[$id]['is_expanded'] = $tree->isNodeExpanded($tree_item['node_id']);
      $tree_array[$id]['is_last_child'] = $is_last_child;
      $tree_array[$id]['is_first_child'] = $is_first_child;
      $tree_array[$id]['levels_status'] = $levels_status_array;

      if(	$tree_array[$id]['class_name'] == 'image_object' || 
          $tree_array[$id]['class_name'] == 'file_object')
        $tree_array[$id]['icon'] = '/root?node_id=' . $tree_item['node_id'] . '&icon';
      elseif(isset($tree_item['icon']) &&  $tree_item['icon'])
        $tree_array[$id]['icon'] = $tree_item['icon'];
      else
        $tree_array[$id]['icon'] = '/shared/images/generic.gif';
    }

    return $tree_array;
  }