function get_return_value_for_link_fields($bean, $module, $link_name_to_value_fields_array)
{
    global $module_name, $current_user;
    $module_name = $module;
    if ($module == 'Users' && $bean->id != $current_user->id) {
        $bean->user_hash = '';
    }
    $bean = clean_sensitive_data($value->field_defs, $bean);
    if (empty($link_name_to_value_fields_array) || !is_array($link_name_to_value_fields_array)) {
        return array();
    }
    $link_output = array();
    foreach ($link_name_to_value_fields_array as $link_name_value_fields) {
        if (!is_array($link_name_value_fields) || !isset($link_name_value_fields['name']) || !isset($link_name_value_fields['value'])) {
            continue;
        }
        $link_field_name = $link_name_value_fields['name'];
        $link_module_fields = $link_name_value_fields['value'];
        if (is_array($link_module_fields) && !empty($link_module_fields)) {
            $result = getRelationshipResults($bean, $link_field_name, $link_module_fields);
            if (!$result) {
                $link_output[] = array('name' => $link_field_name, 'records' => array());
                continue;
            }
            $list = $result['rows'];
            $filterFields = $result['fields_set_on_rows'];
            if ($list) {
                $rowArray = array();
                foreach ($list as $row) {
                    $nameValueArray = array();
                    foreach ($filterFields as $field) {
                        $nameValue = array();
                        if (isset($row[$field])) {
                            $nameValue['name'] = $field;
                            $nameValue['value'] = $row[$field];
                            $nameValueArray[] = $nameValue;
                        }
                        // if
                    }
                    // foreach
                    $rowArray[] = $nameValueArray;
                }
                // foreach
                $link_output[] = array('name' => $link_field_name, 'records' => $rowArray);
            }
            // if
        }
        // if
    }
    // foreach
    return $link_output;
}
/**
 * Retrieve a collection of beans that are related to the specified bean and optionally return relationship data for those related beans.
 * So in this API you can get contacts info for an account and also return all those contact's email address or an opportunity info also.
 * 
 * @param String $session -- Session ID returned by a previous call to login.
 * @param String $module_name -- The name of the module that the primary record is from.  This name should be the name the module was developed under (changing a tab name is studio does not affect the name that should be passed into this method)..
 * @param String $module_id -- The ID of the bean in the specified module
 * @param String $link_field_name -- The name of the lnk field to return records from.  This name should be the name the relationship.
 * @param String $related_module_query -- A portion of the where clause of the SQL statement to find the related items.  The SQL query will already be filtered to only include the beans that are related to the specified bean.
 * @param Array $related_fields - Array of related bean fields to be returned.
 * @param Array $related_module_link_name_to_fields_array - For every related bean returrned, specify link fields name to fields info for that bean to be returned. For ex.'link_name_to_fields_array' => array(array('name' =>  'email_addresses', 'value' => array('id', 'email_address', 'opt_out', 'primary_address'))). 
 * @param Number $deleted -- false if deleted records should not be include, true if deleted records should be included.
 * @return Array 'entry_list' -- The records that were retrieved
 *	     		 'relationship_list' – The records link field data. The example is if asked about accounts contacts email address then return data would look like Array ( [0] => Array ( [name] => email_addresses [records] => Array ( [0] => Array ( [0] => Array ( [name] => id [value] => 3fb16797-8d90-0a94-ac12-490b63a6be67 ) [1] => Array ( [name] => email_address [value] => hr.kid.qa@example.com ) [2] => Array ( [name] => opt_out [value] => 0 ) [3] => Array ( [name] => primary_address [value] => 1 ) ) [1] => Array ( [0] => Array ( [name] => id [value] => 403f8da1-214b-6a88-9cef-490b63d43566 ) [1] => Array ( [name] => email_address [value] => kid.hr@example.name ) [2] => Array ( [name] => opt_out [value] => 0 ) [3] => Array ( [name] => primary_address [value] => 0 ) ) ) ) )							     		    
* @exception 'SoapFault' -- The SOAP error, if any
*/
function new_get_relationships($session, $module_name, $module_id, $link_field_name, $related_module_query, $related_fields, $related_module_link_name_to_fields_array, $deleted)
{
    global $beanList, $beanFiles;
    $error = new SoapError();
    if (!checkSessionAndModuleAccess($session, 'invalid_session', $module_name, 'read', 'no_access', $error)) {
        return;
    }
    // if
    $class_name = $beanList[$module_name];
    require_once $beanFiles[$class_name];
    $mod = new $class_name();
    $mod->retrieve($module_id);
    if (!checkACLAccess($mod, 'DetailView', $error, 'no_access')) {
        return;
    }
    // if
    $output_list = array();
    $linkoutput_list = array();
    // get all the related mmodules data.
    $result = getRelationshipResults($mod, $link_field_name, $related_fields, $related_module_query);
    if ($result) {
        $list = $result['rows'];
        $filterFields = $result['fields_set_on_rows'];
        if (sizeof($list) > 0) {
            // get the related module name and instantiate a bean for that.
            $submodulename = $mod->{$link_field_name}->getRelatedModuleName();
            $submoduleclass = $beanList[$submodulename];
            require_once $beanFiles[$submoduleclass];
            $submoduletemp = new $submoduleclass();
            foreach ($list as $row) {
                $submoduleobject = @clone $submoduletemp;
                // set all the database data to this object
                foreach ($filterFields as $field) {
                    $submoduleobject->{$field} = $row[$field];
                }
                // foreach
                if (isset($row['id'])) {
                    $submoduleobject->id = $row['id'];
                }
                $output_list[] = get_return_value_for_fields($submoduleobject, $submodulename, $filterFields);
                $linkoutput_list[] = get_return_value_for_link_fields($submoduleobject, $submodulename, $related_module_link_name_to_fields_array);
            }
            // foreach
        }
    }
    // if
    return array('entry_list' => $output_list, 'relationship_list' => $linkoutput_list);
}