\data\SugarBean.php
PHP Code:
function retrieve_parent_fields($type_info)
{
$queries = array();
global $beanList, $beanFiles;
$templates = array();
$parent_child_map = array();
foreach($type_info as $children_info)
{
foreach($children_info as $child_info)
{
if($child_info['type'] == 'parent')
{
if(empty($templates[$child_info['parent_type']]))
{
$class = $beanList[$child_info['parent_type']];
require_once($beanFiles[$class]);
$templates[$child_info['parent_type']] = new $class();
}
if(empty($queries[$child_info['parent_type']]))
{
$queries[$child_info['parent_type']] = "SELECT id ";
$field_def = $templates[$child_info['parent_type']]->field_defs['name'];
if(isset($field_def['db_concat_fields']))
{
$queries[$child_info['parent_type']] .= ' , ' . db_concat($templates[$child_info['parent_type']]->table_name, $field_def['db_concat_fields']) . ' parent_name';
}
else
{
$queries[$child_info['parent_type']] .= ' , name parent_name';
}
if(isset($templates[$child_info['parent_type']]->field_defs['assigned_user_id']))
{
$queries[$child_info['parent_type']] .= ", assigned_user_id parent_name_owner , '{$child_info['parent_type']}' parent_name_mod";;
}else if(isset($templates[$child_info['parent_type']]->field_defs['created_by']))
{
$queries[$child_info['parent_type']] .= ", created_by parent_name_owner, '{$child_info['parent_type']}' parent_name_mod";
}
$queries[$child_info['parent_type']] .= " FROM " . $templates[$child_info['parent_type']]->table_name ." WHERE id IN ('{$child_info['parent_id']}'";
}
else
{
if(empty($parent_child_map[$child_info['parent_id']]))
$queries[$child_info['parent_type']] .= " ,'{$child_info['parent_id']}'";
}
$parent_child_map[$child_info['parent_id']][] = $child_info['child_id'];
}
}
}
$results = array();
foreach($queries as $query)
{
$result = $this->db->query($query . ')');
while($row = $this->db->fetchByAssoc($result))
{
$results[$row['id']] = $row;
}
}
$child_results = array();
foreach($parent_child_map as $parent_key=>$parent_child)
{
foreach($parent_child as $child)
{
if(isset( $results[$parent_key]))
{
$child_results[$child] = $results[$parent_key];
}
}
}
return $child_results;
}
?>
Bookmarks