function &get_dataset(&$counter, $params = array())
 {
     $counter = 0;
     $links_manager = new links_manager();
     $groups = $links_manager->fetch_groups();
     return new array_dataset($groups);
 }
	function & get_dataset(&$counter, $params=array())
	{
		$counter = 0;
		
		$mapped_node = map_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;
		    
		    //if (!isset($objects[$link['target_node_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 _valid_perform(&$request, &$response)
  {
    if (!$this->dataspace->get('group_id'))
    {
      $request->set_status(REQUEST_STATUS_FAILURE);
      return;
    }

    $links_manager = new links_manager();

    $result = $links_manager->update_links_group(
        $this->dataspace->get('group_id'),
        $this->dataspace->get('identifier'),
        $this->dataspace->get('title')
    );

    if ($result !== false)
    {
      $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);

      if($request->has_attribute('popup'))
        $response->write(close_popup_response($request));
    }
    else
      $request->set_status(REQUEST_STATUS_FAILURE);
  }
 function _valid_perform()
 {
     $links_manager = new links_manager();
     $result = $links_manager->create_link($this->dataspace->get('group_id'), $this->dataspace->get('linker_node_id'), $this->dataspace->get('target_node_id'));
     if ($result !== false) {
         return new close_popup_response(RESPONSE_STATUS_FORM_SUBMITTED);
     } else {
         return new failed_response();
     }
 }
	function _valid_perform()
	{
	  $links_manager = new links_manager();
	  
	  $result = $links_manager->delete_link($this->dataspace->get('link_id'));

    if ($result !== false)
		  return new close_popup_response(RESPONSE_STATUS_FORM_SUBMITTED);
    else
		  return new failed_response();
	}
 function _valid_perform(&$request, &$response)
 {
     $data = $this->dataspace->export();
     $links_manager = new links_manager();
     if (isset($data['priority'])) {
         $links_manager->set_links_priority($data['priority']);
     }
     $request->set_status(REQUEST_STATUS_SUCCESS);
     if ($request->has_attribute('popup')) {
         $response->write(close_popup_response($request));
     }
 }
 function _valid_perform(&$request, &$response)
 {
     $links_manager = new links_manager();
     $result = $links_manager->delete_link($this->dataspace->get('link_id'));
     if ($result !== false) {
         $request->set_status(REQUEST_STATUS_FORM_SUBMITTED);
         if ($request->has_attribute('popup')) {
             $response->write(close_popup_response($request));
         }
     } else {
         $request->set_status(REQUEST_STATUS_FAILURE);
     }
 }
 function _valid_perform()
 {
     if (!$this->dataspace->get('group_id')) {
         return new failed_response();
     }
     $links_manager = new links_manager();
     $result = $links_manager->update_links_group($this->dataspace->get('group_id'), $this->dataspace->get('identifier'), $this->dataspace->get('title'));
     if ($result !== false) {
         return new close_popup_response(RESPONSE_STATUS_FORM_SUBMITTED);
     } else {
         return new failed_response();
     }
 }