function & get_dataset(&$counter, $params=array())
	{
		$counter = 0;
		
		$mapped_node = map_current_request_to_node();
		
		$links_manager = new links_manager();
		
		$groups = array();
		
		if(isset($params['group_identifier']))
		{
		  if($group = $links_manager->fetch_group_by_identifier($params['group_identifier']))
		    $groups[$group['id']] = $group;
		}
		else
		  $groups = $links_manager->fetch_groups();

		if (!is_array($groups) || !count($groups))
		  return new empty_dataset();

		if(isset($params['back_links']) && $params['back_links'])
		  $links = $links_manager->fetch_back_links($mapped_node['id'], array_keys($groups));
		else
		  $links = $links_manager->fetch_target_links($mapped_node['id'], array_keys($groups));

		if (!is_array($links) || !count($links))
		  return new array_dataset($groups);
		
		$target_node_ids = complex_array :: get_column_values('target_node_id', $links);
				
		if (!is_array($target_node_ids) || !count($target_node_ids))
		  return new array_dataset($groups);
		
		$site_object_class_name = isset($params['loader_class_name']) ? $params['loader_class_name'] : 'site_object';
		$objects =& fetch_by_node_ids($target_node_ids, $site_object_class_name, $counter, array(
		  'restrict_by_class' => false
		));
		
		$result = array();
		
		foreach($groups as $group_id => $group)
		{
      $groups[$group_id]['links'] = array();
      
		  foreach($links as $link_id => $link)
		  {
		    if ($link['group_id']!= $group_id)
		      continue;
        
        $link_data = array_merge($objects[$link['target_node_id']], $link);
        $groups[$group_id]['links'][$link_id] = $link_data;
		  }
		}
		
		return new array_dataset($groups);
	}		
 function get_node_id()
 {
     if (!$this->node_id) {
         if ($this->node_path) {
             if (!($node = map_url_to_node($this->node_path))) {
                 $node = map_current_request_to_node();
             }
         } else {
             $node = map_current_request_to_node();
         }
         $this->node_id = $node['id'];
     }
     return $this->node_id;
 }
Ejemplo n.º 3
0
require_once LIMB_DIR . 'core/lib/db/db_table_factory.class.php';
require_once LIMB_DIR . 'core/lib/error/error.inc.php';
require_once LIMB_DIR . 'core/lib/locale/strings.class.php';
require_once LIMB_DIR . 'core/lib/http/control_flow.inc.php';
require_once LIMB_DIR . 'core/tree/tree.class.php';
require_once LIMB_DIR . 'core/fetcher.class.php';
require_once LIMB_DIR . 'core/model/stats/stats_register.class.php';
require_once LIMB_DIR . 'core/model/response/response.class.php';
start_user_session();
$stats_register = new stats_register();
debug::add_timing_point('require_done');
$recursive = false;
if (isset($_REQUEST['recursive_search_for_node']) && $_REQUEST['recursive_search_for_node']) {
    $recursive = true;
}
$node =& map_current_request_to_node($recursive);
if (!$node) {
    debug::write_error('node not found', __FILE__ . ' : ' . __LINE__ . ' : ' . __FUNCTION__);
    ob_end_clean();
    if (debug::is_console_enabled()) {
        echo debug::parse_html_console();
    }
    if (defined("ERROR_DOCUMENT_404")) {
        reload(ERROR_DOCUMENT_404);
    } else {
        header("HTTP/1.1 404 Not found");
    }
    exit;
}
if (isset($node['only_parent_found']) && $node['only_parent_found']) {
    if (isset($_REQUEST['action'])) {